UITableViewCellの中に埋め込まれている間最初の応答者になるためのUITextFieldを告げます
-
20-09-2019 - |
質問
私はUITextField
のサブビューですUITableViewCell
を持っています。
ときに私の見解負荷、私はテキストフィールドがファーストレスポンダになりたいです。私はこれを行うには、表のセル内のテキストフィールドへのポインタを持っている私がしようとしています:
[myTextField becomeFirstResponder];
このリターンは、ドキュメントによると、テキストフィールドがファーストレスポンダになることを拒否したことを意味する...私が間違って何をしているのですか?
、関係なく、それは呼ばれていたときの、すべての時間をNO
編集ます:
textfield
は適切に触れられることに応答します。その後、キーボードを持ち出します。これは、問題が発生したことをプログラムでbecomefirstresponder
するためにそれを言ったときだけです。
解決
これは、私がそれをファーストレスポンダを送信しようとしていたときにテキストフィールドがnilだったことが判明しました。
ライフサイクルの後半becomeFirstResponder
を送信すると、働いています。
他のヒント
私はグループ化されたテーブルビューセルのサブビューとして追加したテキストフィールドと同じ問題を抱えていた - しかし、一部の周り突く後の溶液を考え出し
。と仮定すると、あなたが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];
}
でそれを呼び出します。
-(void)viewDidLoad{
[super viewDidLoad];
// Do any additional setup after loading the view.
[self.myTextField becomeFirstResponder]
//... any other code you need
}
私はUITextField
がcellForRowAtIndexPath
の内側に最初のレスポンダを作った時にカーソルが表示されるまでになっていませんでした。テキストフィールドだけで結構な仕事だろうが、それはフィールドの内側に点滅するカーソルを示していませんでした。ボタンを長押しするだろうというとき、ズーム拡大]もカーソルが表示されません。
私はbecomeFirstResponder
メソッドの内部で、私のdidSelectRowAtIndex
を設定することで、この奇妙な問題を回避なっています。
editing
に設定あなたのUITableViewのYES
プロパティですか?