我使用UIScrollView在iPhone上制作大尺寸(大于320像素)的UI.
我创建了一个UIScrollView实例,并在其上添加了一些子视图.问题是我只想在用户触摸子视图之外时启用滚动,当用户触摸其中一个子视图时停止滚动.
我阅读文件并试图找到样品,但我找不到好的提示.如果您有任何想法,请帮助我.
UIScrollView有一个scrollEnabled属性,允许您以编程方式禁用滚动.它还有一个委托(UIScrollViewDelegate),允许您查看滚动开始/结束等事件.似乎你应该能够以某种方式结合这些选项来烹饪.
您真正感兴趣的属性 - 我现在正在测试它,因为我遇到了同样的问题 - 是canCancelContentTouches
.
如果此属性的值为NO,则在内容视图开始跟踪后,无论手指移动,滚动视图都不会滚动.
如果这不能提供您想要的结果,则将UIScrollView子类化并覆盖该touchesShouldBegin:withEvent:inContentView
方法,这是接受的答案所暗示的.
如果要检测UIScrollView的任何子视图内的触摸,则必须子类化UIScrollView并覆盖为此目的专门创建的touchesShouldBegin
和touchesShouldCancelInContentView
方法.
除此之外,您无法识别子视图中的触摸,因为UIScrollView倾向于自己处理所有触摸并且不会将它们传递给其子视图.
祝一切顺利.
要做到这一点,最简单的方法是设置delayContentTouches
到NO
用于滚动视图。这样,就可以设置默认行为,以便UIControl中的任何内容都可以立即将触摸传递给控件,其他所有内容都可以滚动。