Uitextviewがファーストレスポンダーになったときの処理方法。テキストビューにテキストがあり、ビューがアクティブになったときにテキストをクリアしたい。どうやってやるの?前もって感謝します
次のUITextViewDelegate
メソッドを確実に使用できます。
- (BOOL)textViewShouldBeginEditing:(UITextView *)textView
YESを返し、そのメソッド内でインターセプトするだけです。 UITextFields
に対してUITextFieldDelegate
を使用してそれを行うこともできます。
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
お役に立てば幸いです。
以前の回答はUITextBoxに最適ですが、NSResponderから派生したカスタムクラスがあり、それがいつファーストレスポンダーになるかを知る必要がある場合:
-(BOOL) becomeFirstResponder
{
// Your stuff here
return YES;
}
Swift 4ソリューション
func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {
return true
}
上記のように、becomeFirstResponderをオーバーライドできますが、スーパークラスの実装を呼び出す必要があることに注意してください。そうしないと、テキストフィールドでキーボードをポップするようなことは機能しません。つまり.
override func becomeFirstResponder() -> Bool {
if super.becomeFirstResponder() {
// set up the control state
return true
}
return false
}
textViewShouldBeginEditing
は、テキストビューが最初のレスポンダーになる前に実際にトリガーされます。
textViewDidBeginEditing
は、テキストビューが最初のレスポンダーになるとトリガーされ、アクティブなテキストビューが何であるかを知る必要があるコードを実行するのに最適な場所になります。
どのフィールドがアクティブであるかについて本当に心配しておらず、フィールドがタップされたらテキストをクリアしたい場合は、どちらの機能も使用できます。
編集:同じ方法がテキストフィールドに使用できます。