web-dev-qa-db-ja.com

UITextViewがファーストレスポンダーになった時期を知る方法

Uitextviewがファーストレスポンダーになったときの処理方法。テキストビューにテキストがあり、ビューがアクティブになったときにテキストをクリアしたい。どうやってやるの?前もって感謝します

26
nyanev

次のUITextViewDelegateメソッドを確実に使用できます。

- (BOOL)textViewShouldBeginEditing:(UITextView *)textView

YESを返し、そのメソッド内でインターセプトするだけです。 UITextFieldsに対してUITextFieldDelegateを使用してそれを行うこともできます。

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField

お役に立てば幸いです。

55
migs647

以前の回答はUITextBoxに最適ですが、NSResponderから派生したカスタムクラスがあり、それがいつファーストレスポンダーになるかを知る必要がある場合:

-(BOOL) becomeFirstResponder
{
    // Your stuff here
    return YES;
}
4
terphi

Swift 4ソリューション

func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {           
        return true
 }
3
kuzdu

上記のように、becomeFirstResponderをオーバーライドできますが、スーパークラスの実装を呼び出す必要があることに注意してください。そうしないと、テキストフィールドでキーボードをポップするようなことは機能しません。つまり.

override func becomeFirstResponder() -> Bool {
  if super.becomeFirstResponder() {
    // set up the control state
    return true
  }

  return false
}
3
Jim Geist

textViewShouldBeginEditingは、テキストビューが最初のレスポンダーになる前に実際にトリガーされます。

textViewDidBeginEditingは、テキストビューが最初のレスポンダーになるとトリガーされ、アクティブなテキストビューが何であるかを知る必要があるコードを実行するのに最適な場所になります。

どのフィールドがアクティブであるかについて本当に心配しておらず、フィールドがタップされたらテキストをクリアしたい場合は、どちらの機能も使用できます。

編集:同じ方法がテキストフィールドに使用できます。

1
CSjunkie