我已经实现了UIView
的自定义子类,并重写了drawRect:
方法。
在我的自定义视图中,我还希望手柄触摸,所以我还重写了touchesBegan
、touchesMoved
和touchesEnded
。
这很好,但如果屏幕上的视图数量增加,那么我必须使用UIScrollView
作为UIViewController
的根视图。
一旦我的自定义UIView
成为UIScrollView
的子视图,那么它就不会接收到触摸事件。即使我在自定义UIView
中移动手指,滚动视图也会滚动(我所有的触摸事件都会转到UIScrollView
)。
我该如何解决这个问题?
有几种方法可以尝试:
-
尝试在
UIScrollView
:上设置以下属性scrollView.delaysContentTouches = NO;
scrollView.canCancelContentTouches = NO;
请在此处查看类似的SO问题/答案。
-
执行
hitTest:withEvent:
。看这里,看这里。 -
使用
UIGestureRecognizer
。看这里,看这里。
我个人建议使用UIGestureRecognizer
,但这取决于您的具体情况(这些选项中的任何一个都可能适合您)。
看看另一个问题的回答:https://stackoverflow.com/a/4629821/193254
您还必须对滚动视图进行子类化,并实现hitTest:
方法。