私はビューの基本的なUITextFieldと「送信」ボタンがあります。ユーザーがUITextFieldをタップすると、キーボードが表示されます。私はビューをシフトして、有用なビットがキーボードによってブロックされないようにし、キーボードが消えたときに、再びキーボードの表示/非表示の通知に登録されたものを元に戻します。UITapGestureRecognizerのタップロケーションの悩み
ユーザーは、キーボードの溝を開けるために、ビュー内のどこでもタップすることができます。だから、私はUITapGestureRecognizerを追加し、テキストフィールドにresignFirstResponderを呼び出します。作品はすごく....ほとんど。
[送信]ボタンをタップすると機能しません。 cancelsTouchesInViewではなく、私はそれをNOに設定しました。それは動く景色です。ポストシフトダウンビューに「タップ」が登録されます。したがって、ビューを80ポイント下にスライドさせると、ユーザーが「ボタン上に」作成したタップが、ボタンの上の80ポイントになります。
したがって、ジェスチャーレコグナイザイベントが発生してビューが移動する前に、そのタップを通過させるにはどうすればよいですか?
これは非常にエレガントな解決策です。私の唯一の懸念は、UIControl以外のオブジェクトにタップを登録するだけなので、必要な場合もあります(別のコントロールをタップすると自動的に現在のコントロール、つまりUITextFieldでアクティブになります)。私はそれを試してみるよ – DBD
それはうまくいったが、ページ上にいくつかのサブビューがあり(多くのダイナミックな)、すべてをアクションに設定するのは面倒だ。私はUser Interaction Enabled = NOに設定できましたが、他のコントロールにはオプションがありません。したがって、これは素晴らしい答えですが、この場合はうまくいかないでしょう。 – DBD