UIView
私はUITapGestureRecognizer
を追加しました。このビューの中には、基本的にはUITableView
のサブビューがあります。問題は、UITableView
が行のタップを認識しないのはなぜですか、その代わりにタップジェスチャ認識プログラムのハンドラに常に移動することです。これはなぜですか、これをどのように解決しますか?タップ数を2に設定すると、正常に動作します。どのようにこれを解決するための任意のアイデアですか?基本的にはdidSelectRowAtIndexPath
は呼び出しません。UIViewとUITableViewのUITapGestureRecognizerが矛盾しています
答えて
認識者のcancelsTouchesInView
をNO
に設定してください。さもなければ、それはそれ自身のために接触を「消費」し、それをテーブルビューに渡さない。そのため、選択イベントは発生しません。あなたがしたい場合
両方があなたUITableView
とあなたのUITapGestureRecognizer
がタッチイベントを受信するために、[はいcancelsTouchesInView = NO
が動作します。タップジェスチャ認識器がテーブルビュー用のタッチイベントを受け取らないようにするには、それはやや容易ではなく非常に能力があります。
ジェスチャ認識機能を作成するときは、自分をそのデリゲートとして設定します。次に、gestureRecognizer:shouldReceiveTouch:
デリゲートメソッドを実装します。基本的な実装は次のようになります。このタッチの位置がtableView
の管轄内であれば基本的に
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch{
UITableView *tableView = self.tableView;
CGPoint touchPoint = [touch locationInView:tableView];
return ![tableView hitTest:touchPoint withEvent:nil];
}
(実装される)この方法はtableView
要求し、それがない場合は、tableView
を許容...タッチを受けるからジェスチャ認識をブロックしますタッチを受ける。
3行目と4行目を以下のように変更することでこれをもっと簡単にできませんでした:' CGRect frame = self.tableView.frame; CGRectContainsPoint(フレーム、位置); '? – Aufwind
@Aufwindあまりにも複雑な計算コードを指摘してくれてありがとう。私はこの答えをあまりにも急ぐ必要があります。 'CGRectContainsPoint()'は当然この計算を処理するよりはるかに良い方法です。しかし、私は 'hitTest:withEvent:'を使う答えを編集しました。それはいくつかの理由から私の好みの方法でしょう。その1つは、不規則な形のビューです。ビューが不規則な形(例えば円の領域に触れただけの円)で表示された場合このケースは、私が行っていた手動計算では正しく処理されませんでした。再度、感謝します。 – NJones
ようこそ。 :-) – Aufwind
- 1. JavaScriptが矛盾しています
- 2. jquery.min.jsが矛盾しています
- 3. jQueryスクリプトが矛盾しています
- 4. startDragsが矛盾しています
- 5. IOファイルコードが矛盾しています
- 6. 'p'スタイルが矛盾しています
- 7. LeptonicaがXcodeフレームワークと矛盾します
- 8. jqueryとフォームが矛盾します
- 9. jquery datepickerが角と矛盾します
- 10. mod_jkがmod_rewriteと矛盾します
- 11. 矛盾するファイルと矛盾するファイルを残してください
- 12. AutoComplete = "off"は矛盾しています
- 13. pydocは矛盾していますか?
- 14. swift cellForRowAtIndexPath定義が前の値と矛盾しています
- 15. .NET 4.5へのアップグレード:ItemsControlがアイテムソースと矛盾しています
- 16. ジンジャとJavaScriptの構文が矛盾していますか?
- 17. Jquery UIがCSSのブートストラップと矛盾しています
- 18. NivoSliderとLightboxのJavaScriptが矛盾しています
- 19. スカラーが継承しているメソッド名と矛盾します
- 20. PHPフォームと何かが矛盾しています。
- 21. なぜcurl_multi_selectとcurl_multi_info_readが矛盾していますか?
- 22. jQueryタブCSSがjQueryメニューと矛盾しています。
- 23. jQueryとMooToolsが矛盾しています
- 24. iOSシミュレータがiPad 2、UIBarButtonItemと矛盾しています
- 25. htaccess ErrorDocument 404とRewriteEngineが矛盾しています
- 26. jQueryドロップダウンメニューとCSS Mediaクエリが矛盾しています
- 27. チェックスタイルがOracle Javaスタイルガイドと矛盾しています
- 28. 矛盾アクセシビリティエラーが
- 29. onmouseoutとonclickと矛盾しています
- 30. クラッセのタイプの階層が矛盾しています
[この値を「いいえ」に設定すると、シーケンスが認識されたときでも、すべてのタッチを基になるビューに配信するように認識装置に指示します。](http://developer.apple.com/library/IOs/#documentation/ UIKit/Reference/UIGestureRecognizer_Class/Reference/Reference.html) – dasblinkenlight
サンプルコード 'longPressGestureRecognizer.cancelsTouchesInView = NO;' (ありがとうdasblinkenlight) – tmr
@dasblinkenlightはまだ私のために働いていない、私は私のテーブルビューのセル上でタッチイベントを実行することができない、私はテーブルビューのセルから項目を選択することができない、テーブルビュー:UITableView、didSelectRowAt indexPath:IndexPath) 'アイテムが選択されていません –