49

UITextFieldサブビューであるがありUITableViewCellます。

ビューが読み込まれたときに、テキストフィールドをファーストレスポンダーにします。テーブルセルのテキストフィールドへのポインタがあるので、これを行うために私は試しています:

[myTextField becomeFirstResponder];

これは、いつ呼び出されたかに関係なく、常に返されます。これはNO、ドキュメントによると、テキストフィールドがファーストレスポンダーになることを拒否したことを意味します...私は何が間違っているのですか?

編集:

触れられたときtextfieldに適切に反応します。次にキーボードを起動します。becomefirstresponder問題が発生するのは、プログラムで指示した場合のみです。

4

5 に答える 5

44

最初のレスポンダーを送信しようとしたときに、テキストフィールドがnilであることが判明しました。becomeFirstResponderライフサイクルの後半で送信が機能しました。

于 2010-02-01T15:02:41.977 に答える
9

グループ化されたテーブルビューセルにサブビューとして追加したテキストフィールドでも同じ問題が発生していましたが、少し調べてから解決策を見つけました。

cellForRowAtIndexPathメソッドでテキストフィールドにタグを付けたとすると、次のようなことができます。

- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];

    NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];
    UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];

    myTextField = (UITextField *)[cell viewWithTag:kMyTextFieldTag];
    [myTextField becomeFirstResponder];
}
于 2010-01-05T17:57:51.583 に答える
5

-(void)viewDidLoadで呼び出すと機能します。

-(void)viewDidLoad{
   [super viewDidLoad];
   // Do any additional setup after loading the view.
   [self.myTextField becomeFirstResponder] 

   //... any other code you need 
}
于 2014-04-24T06:52:13.790 に答える
1

UITextFieldの内部でファーストレスポンダーが作成されたときに、カーソルが表示されませんでしたcellForRowAtIndexPath。テキストフィールドは問題なく機能しますが、フィールド内にカーソルが点滅していませんでした。押し続けると、ズーム拡大もカーソルを表示しません。

becomeFirstResponderメソッドの内部を設定することで、この奇妙な問題を回避しましたdidSelectRowAtIndex

于 2010-05-10T18:27:44.327 に答える
0

UITableVieweditingプロパティはに設定されていYESますか?

于 2009-11-14T01:01:48.517 に答える