1

メソッドの独自のカスタム サブクラスを実装UIViewし、メソッドをオーバーライドしましたdrawRect:

私のカスタム ビューでは、ハンドル タッチも必要なので、 と もオーバーライドtouchesBegantouchesMovedますtouchesEnded

これは問題なく動作しますが、画面上のビューの数が増えると、 をUIScrollViewルート ビューとして使用する必要がありますUIViewController

カスタムUIViewが のサブビューになるとUIScrollView、タッチ イベントを受け取りません。custom 内で指を動かしてもUIView、スクロール ビューがスクロールされます (すべてのタッチ イベントが に移動しますUIScrollView)。

この問題を解決するにはどうすればよいですか?

4

2 に答える 2

7

試すことができるいくつかのアプローチがあります。

  1. で以下のプロパティを設定してみてくださいUIScrollView

    scrollView.delaysContentTouches = NO;
    scrollView.canCancelContentTouches = NO;

    同様の SO の質問/回答をこちらこちらでご覧ください。

  2. 実装しhitTest:withEvent:ます。ここここを参照してください。

  3. を使用しUIGestureRecognizerます。ここここを参照してください。

個人的には を使用することをお勧めしUIGestureRecognizerますが、それは特定の状況によって異なります (これらのオプションのいずれかが適切に機能する場合があります)。

于 2013-07-27T10:41:26.227 に答える
0

別の質問からのこの応答を見てください: https://stackoverflow.com/a/4629821/193254

scrollview もサブクラス化し、そのhitTest:メソッドを実装する必要があります。

于 2013-07-26T09:51:22.423 に答える