UITextField
のタッチイベント(具体的にはUIControlEventTouchUpInside
とUIControlEventTouchUpOutside
)に応答したいのですが、唯一のイベントはUIControlEventTouchCancel
です。UITextFieldのタッチイベントにどのように応答できますか?
UIControlEventEditingDidBegin
は、私が検出しようとしているものではないフィールドがフォーカスを取得した場合にのみ発生するため、使用できません。現在のフォーカス状態にかかわらず、ユーザーが指を離したときと、テキストフィールドの内側か外側かを知りたい。
誰でもこれを達成する方法を知っていますか?
明らかに私はaddTarget:action:forControlEvents
を使用しようとしました。は動作しません。タッチアップイベントはキャンセルによって防止されます。私はのタッチアップを検出する方法を、の前にUITextField
が消費し、Cancelイベントを生成します。
可能であれば、余分なビューを作成しないようにしたいと考えています。
いいえ、間違いなく動作しません。私が最初に試したこと。 "yourDesiredMethod"メソッドは呼び出されません。 UIControlEventTouchDownのイベントを取得できますが、どちらのTouchUpイベントも起動されません。代わりに、UIControlEventTouchCancelイベントが発生します。長いイベントで倍率ループが発生したり、モーダルダイアログやロック画面などのユーザー入力を取り消したときにも起動されるため、そのイベントをハッキープロキシとして使用することはできません。 – theK42
うわー、私はそれが他のUIViewベースのクラスのように動作すると思った。カスタムUITextFieldを作成し、touchesBegan:メソッドをオーバーライドして、適切な場合に最初のレスポンダになり、キーボードがまだ表示されるようにすることができます。 –
私はtouchesBegan/Ended/Cancelledを上書きしようとしましたが、EndedイベントのないBegan/Cancelledのペアも与えました。これは本当にイライラしています!また、これらのメソッドをオーバーライドしても、textFieldが最初のレスポンダになるのを防ぐことができなかったので、チャンスを得る前に基本クラスがタッチ処理を行っています。 – theK42