2013-02-12 2 views
6

私はiphone.iの新機能です。自分のプロジェクトにリマインダーアプリケーションを実行しています。私はリマインダーのタイトルとデータのような入力値を取得したい& uiactionsheet.iからの時間は、アクションシートにdatepickerとuitextfieldを作成しました。私は、彼らが私はテキストフィールド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 
    } 

に表示されていないタイプされたactionsheetは、私がテキストフィールドをクリックしたtextfield.whenが表示されたキーパッドが表示されますが、means..when動作していませんなぜキーボードからの入力を受け付けていないのか分かりません。助言がありますか?

+1

これは 'UIActionSheet'の悪用です。これは目的ではありません。標準UIコンポーネントは、設計されていない方法で使用しないでください。 Appleが「UIActionSheet」の仕組みやiOSの将来のバージョンでの外観を完全に変更したらどうなるのでしょうか?必要なものを表示するための独自のカスタムビューを作成します。 – rmaddy

+1

でも、UITextFieldをUIActionSheetに配置する必要がありますか?それをUIAlertViewに入れるのはとてもシンプルできれいです。 – iPatel

+0

なぜあなたはUIActionsheet ..の代わりにAlertを使用しないのですか? –

答えて

0

カスタムUIActionSheetを使用します。
1を次のように行います)新しいのUIViewController
2を追加)

@interface ViewController 
{ 
      UITextField *TextField; 

    } 

3 1のUITextField
を宣言)ActionSheet &のTextField

@interface ViewController : UIViewController <UIActionSheetDelegate, UITextFieldDelegate> { 

     UITextField *TextField; 

    } 

4)の代表団は、今

参照メソッドを実装追加このリンクをちょうだい見るとstackoverflow

+0

あなたは全く違ったリンクを投稿しましたが、使用されていません。 – Ravindhiran

+0

@Ravindhiran投稿されたリンクの回答は、私が話していることです。 'UIActionSheet'を使わずに、あなたが望むことをするカスタムクラスです。ソリューションの基礎としてそのコードを使用することを検討してください。 – rmaddy

+0

kありがとう、ちょっと疑わしいことにリンクを投稿した理由@interface trialViewController:UIViewController UIActionsheetDelegateの必要性は何ですか?彼はuiviewの代わりに使用しました – Ravindhiran

4

UITextFieldUIActionSheetに追加すると、UITextFieldUIActionSheetの下に残ります。だから、UITextField入力任意のテキストをするために動作しませんUITextFieldUIActionSheet上記のthats方法
[menu addSubview:txtReminderTitle];を持参する必要があります。 UITextFieldを追加するため

次のコードを使用:

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

のみUITextFieldを追加する方法の変更を行う必要があります。

関連する問題