1

私はiPhone開発にかなり慣れていないので、無知を許してください。私はこれを少しグーグルで検索しましたが、これまでのところ何も役に立ちません。これが私がやりたいことです:

UITextField がタッチされたときにサブビューをポップアップさせたい (画面の残りの部分がバックグラウンドに表示される)。ポップアップは、IB で作成した電卓 UIView です。Apple の開発者ガイドラインによると、カスタマイズされたキーボードよりもポップアップ ショーを表示する方がよいようです。

これが私の質問です。UITextField のタッチをキャプチャするにはどうすればよいですか? サブビューを表示するにはどうすればよいですか?

サブビューを表示するために以下のようなことを試しましたが、うまくいきませんでした:

    CustomCalculator *customCalc = [[CustomCalculator alloc] initWithNibName:@"CustomCalculator" bundle:nil];

UIViewController *calcController = [self.customCalc.view];

[self.view addSubview:calcController.view];
4

2 に答える 2

1

デリゲートメソッドを使用します。

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
   //Add your subview here 

   return NO; //this will stop the keyboard from poping up
  }

このように、誰かがテキストフィールドをタップすると、キーボードの代わりにビューがポップアップ表示されます。これで、ユーザーがビューを操作したら、ユーザーがビューのボタンをタップしたことに対する反応として、textfield.textプロパティの文字列を直接操作する必要があります。

于 2011-09-26T19:44:34.407 に答える
0

UITextFieldDelegate を実装し、そのメソッドは

-(void) textFieldDidBeginEditing:(UITextField *)textField

UITextField に触れると、上記のメソッドが起動されます。次に、UIPopoverController を配置し (ポップアップでビューを表示するために使用していると思います)、完了したらすぐに値を UITextField に戻します。したがって、表示されるポップオーバー/viewcontroller のデリゲートは、テキスト フィールド オブジェクトである必要があります。

編集:以下の他の回答を見た後、キーボードが表示されないようにする方法を説明するのを忘れていたことに気づきました。これを上記のメソッドの最初の行にするだけです。

    [textField resignFirstResponder];
于 2011-09-26T18:50:27.410 に答える