0

私はすべての私のViewControllerが継承するカスタムUIViewControllerを持っています。このコントローラには、私はUITapGestureRecognizerを持っています。また、inHelpModeというbooleanプロパティもあります。UITwitchまたはUITextFieldをUITapGestureRecognizerに対応させるには、それぞれ編集モードに切り替えることも、編集モードにすることもできますか?

ビューがヘルプモードにあるとき、コントロールをタップすると、コントロールの機能に関する情報がポップアップ表示されます。

これは、UISwitchとUITextFieldの2つの注目すべき例外を除いて、ほとんどのコントロールで問題なく動作します。

最初のスイッチと2番目のスイッチは編集モードになります。

ヘルプモードに入ると、コントロールが応答しなくなるだけでなく、ポップアップが表示されなくなります。コントローラをUItextFieldのデリゲートとして設定し、textFieldShouldBeginEditingをオーバーライドする場合も同じことが起こります。

答えて

0

編集モードに入るときに、UISwitchおよびUITextFieldのuserInteractionEnabledをNOに設定してみてください。ヘルプモードを終了するときに、それをYESに戻すことを忘れないでください。これが有効な場合は、有効になっている場合でも、これらの2つのコントロールがまだ何らかの操作を行うためである必要があります。 userInteractionEnabledをNOに設定すると、UIViewレベルでそれらを無効にするので、うまくいけばタップジェスチャが無視されます。

+0

userInteractionEnabledをNOに設定すると、コントロールはポップオーバーを表示するためにタップジェスチャに反応しなくなりました。 – DanielO

+0

これらのコントロールをすべて含むビューにタップジェスチャーが1つだけ追加されていますか?または、各コントロールのジェスチャーをタップしますか?それが1回のタップジェスチャーであれば、タップの位置がコントロールの範囲内にあるかどうかを検出するためにいくつかの計算を行いますか? –

+0

基本ビュークラスのすべてのビューから継承されるタップジェスチャーです。私はtapメソッドでhitTestを呼び出し、コントロールのタグをpopoverメッセージを含むリストと比較します。 – DanielO

関連する問題