2013-02-12 14 views
6

Tôi mới trong iphone.i đang làm ứng dụng nhắc nhở cho dự án của tôi. tôi muốn nhận các giá trị đầu vào như tiêu đề nhắc nhở và dữ liệu & Thời gian từ uiactionsheet.i đã tạo datepicker và uitextfield trong actionheet. Các actionsheet xuất hiện với textfield.when tôi nhấp vào textfield, bàn phím xuất hiện nhưng không làm việc means..when tôi đã gõ họ không thể nhìn thấy trong textfieldLàm thế nào để làm việc với UITextFields bên trong UIActionsheet?

-(void)btnSetRemainderTapped:(id)sender 
{ 
UIActionSheet *menu = [[UIActionSheet alloc] initWithTitle:@"Select reminder date and time" 
                delegate:self 
             cancelButtonTitle:@"Cancel" 
            destructiveButtonTitle:@"Save" 
             otherButtonTitles:nil,nil]; 
menu.tag =10; 
[menu showInView:self.view]; 
menu.userInteractionEnabled=YES; 

UITextField *txtReminderTitle= [[UITextField alloc] initWithFrame:CGRectMake(20.0, 180, 280.0, 40.0)]; 
[txtReminderTitle setTag:99]; 
[txtReminderTitle setBackgroundColor:[UIColor whiteColor]]; 
[txtReminderTitle setFont:[UIFont boldSystemFontOfSize:17]]; 
[txtReminderTitle setBorderStyle:UITextBorderStyleNone]; 
[txtReminderTitle setTextAlignment:UITextAlignmentCenter]; 
txtReminderTitle.borderStyle = UITextBorderStyleRoundedRect; 
txtReminderTitle.keyboardType = UIKeyboardTypeDefault; 
txtReminderTitle.returnKeyType = UIReturnKeyDone; 
txtReminderTitle.delegate =self; 
[menu addSubview:txtReminderTitle]; 

UIDatePicker *pickerView = [[UIDatePicker alloc] init]; 
pickerView.datePickerMode = UIDatePickerModeDateAndTime; 
pickerView.tag =9999; 
[menu addSubview:pickerView]; 

CGRect menuRect = menu.frame; 
NSInteger orgHeight = menuRect.size.height; 
menuRect.origin.y -= 270; //height of picker 
menuRect.size.height = orgHeight+270; 
menu.frame = menuRect; 

CGRect pickerRect = CGRectMake(20, 250, 280, 200); 
pickerView.frame = pickerRect; 

}

-(void) actionSheet:(UIActionSheet *)actionSheet willDismissWithButtonIndex:(NSInteger)buttonIndex 
    { 
UIDatePicker *datePicker = (UIDatePicker *)[actionSheet viewWithTag:9999]; 
NSDateFormatter *df = [[NSDateFormatter alloc] init]; 
df.dateStyle = NSDateFormatterLongStyle; 
[df setTimeStyle:NSDateFormatterShortStyle]; 
UITextField * txtReminderTitle = (UITextField *)[actionSheet viewWithTag:99]; 
    NSLog(@"%@",txtReminderTitle.text); //it print null value 
    } 

Tôi không chắc chắn lý do tại sao nó không chấp nhận đầu vào từ bàn phím. Bất kỳ đề xuất?

+1

Đây là lạm dụng của 'UIActionSheet'. Đây không phải là mục đích của nó. Không sử dụng các thành phần UI chuẩn theo cách chúng không được thiết kế. Điều gì sẽ xảy ra khi Apple hoàn toàn thay đổi cách hoạt động của UIActionSheet' hoặc trông giống như một phiên bản iOS trong tương lai? Tạo chế độ xem tùy chỉnh của riêng bạn để hiển thị những gì bạn cần. – rmaddy

+1

nhưng wt u cần phải đặt UITextField trong UIActionSheet ?? nó rất đơn giản và đẹp để đặt nó trong UIAlertView. – iPatel

+0

lý do bạn không sử dụng Thông báo thay vì UIActionsheet ..? –

Trả lời

0

Sử dụng UIActionSheet tùy chỉnh. làm như sau
1) thêm mới UIViewController
2) khai báo một UITextField

@interface ViewController 
{ 
      UITextField *TextField; 

    } 

3) thêm đại biểu của ActionSheet & TextField

@interface ViewController : UIViewController <UIActionSheetDelegate, UITextFieldDelegate> { 

     UITextField *TextField; 

    } 

4) Bây giờ thực hiện phương pháp

thấy liên kết này chỉ tôi thấy trên stackoverflow

+0

bạn đăng liên kết hoàn toàn khác nhau họ không được sử dụng uiactionsheet .. – Ravindhiran

+0

@Ravindhiran Câu trả lời được chấp nhận trong liên kết được đăng là những gì tôi đang nói đến. Đây là một lớp tùy chỉnh thực hiện những gì bạn muốn mà không cần sử dụng 'UIActionSheet'.Vui lòng xem xét sử dụng mã đó làm cơ sở cho giải pháp của bạn. – rmaddy

+0

k cảm ơn, nhỏ nghi ngờ bạn đăng liên kết lý do tại sao ông thực hiện @interface trialViewController: UIViewController nhu cầu cho UIActionsheetDelegate là gì? ông đã sử dụng thay vì uiview – Ravindhiran

4

Tôi thấy rằng, khi bạn thêm UITextField vào UIActionSheet thì UITextField vẫn còn trong số UIActionSheet. Vì vậy, bạn cần phải mang theo UITextField phía trên UIActionSheet cách đó
[menu addSubview:txtReminderTitle]; không hoạt động cho UITextField đến nhập bất kỳ văn bản nào.

Sử dụng mã sau đây cho thêm UITextField:

UIWindow *appWindow = [UIApplication sharedApplication].keyWindow; 
[appWindow insertSubview:txtReminderTitle aboveSubview:menu]; 

Chỉ cần làm những thay đổi trong cách thêm UITextField.

Các vấn đề liên quan