UITableViewCellにUITextFieldがあり、別のセルにボタンがあります。
UITextFieldをクリックします(キーボードが表示されます)。
UITextFieldには、次のメソッドがあります。
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
NSLog(@"yes, it's being called");
owner.activeTextField = textField;
return YES;
};
ここで、owner.activeTextFieldは(保持、非アトミック)プロパティです。
問題 キーボードが表示されているときに、セルをスクロールしてビューから外します。次に、別のセルにあるボタンをクリックします。ボタンは次のように呼び出します。
[owner.activeTextField resignFirstResponder]
そしてそれはEXC_BAD_ACCESSを引き起こします。
何か案が?セルは間違いなくメモリ内にあります。私の推測では、それが消えるとビューから削除され、そのプロパティの1つ(親ビュー?)がnilになり、それが上記のエラーの原因になると思います。
私は正しいですか?
TL; DR; UITextFieldがビューから削除されたときに、キーボードを削除(ファーストレスポンダーを辞任)するにはどうすればよいですか?