2013-02-12 31 views
6

我是iphone.i新的提醒應用程序到我的項目。我想獲得像提醒標題和數據的輸入值& uiactionsheet.i的時間已在操作單中創建了datepicker和uitextfield。該actionsheet出現與textfield.when我在文本框點擊,鍵盤會出現但不工作means..when我已鍵入它們是不可見的文本框如何使用UIActionsheet中的UITextFields?

-(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 
    } 

我不知道爲什麼它不接受來自鍵盤的輸入。有什麼建議麼?

+1

這是濫用'UIActionSheet'。這不是它的目的。不要以未設計標準UI組件的方式使用標準UI組件。當蘋果完全改變'UIActionSheet'在未來版本的iOS中的工作方式或外觀時會發生什麼?創建您自己的自定義視圖以顯示您需要的內容。 – rmaddy 2013-02-12 04:54:49

+1

但你需要把UITextField放在UIActionSheet中?它放在UIAlertView中非常簡單和漂亮。 – iPatel 2013-02-12 04:56:30

+0

爲什麼你不使用Alert而不是UIActionsheet? – 2013-02-12 04:59:59

回答

0

使用自定義UIActionSheet。不要像下面
1)添加新的UIViewController
2)申報一個的UITextField

@interface ViewController 
{ 
      UITextField *TextField; 

    } 

3)添加ActionSheet &文本字段的代表

@interface ViewController : UIViewController <UIActionSheetDelegate, UITextFieldDelegate> { 

     UITextField *TextField; 

    } 

4)現在實現方法

看這個鏈接只是我看到stackoverflow

+0

你發佈的鏈接是完全不同的,他們沒有使用uiactionsheet .. – Ravindhiran 2013-02-12 05:27:47

+0

@Ravindhiran在公佈的鏈接接受的答案是我在說什麼。這是一個自定義的類,它可以在不使用UIActionSheet的情況下做你想做的事。請考慮使用該代碼作爲解決方案的基礎。 – rmaddy 2013-02-12 05:38:22

+0

k謝謝,小懷疑你張貼鏈接爲什麼他實現了@interface trialViewController:UIViewController UIActionsheetDelegate需要什麼?他使用而不是uiview – Ravindhiran 2013-02-12 05:47:05

4

我發現,當您將UITextField添加到UIActionSheet時,則UITextField仍保留在UIActionSheet之下。所以你需要把UITextField以上的UIActionSheet這就是
[menu addSubview:txtReminderTitle];不適用於UITextField輸入任何文字

使用下面的代碼添加UITextField

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

只需要做的如何添加UITextField變化。