iOS 滚动视图与表格视图深度解析
1. 滚动视图触摸处理
早期 iOS 系统中, UIScrollView
内部实现的改进解决了许多与滚动视图触摸相关的问题。滚动视图会将拖动或捏合手势解释为滚动或缩放命令,其他手势则会传递给子视图,因此滚动视图内的按钮等界面元素能正常工作。
甚至可以将一个滚动视图嵌套在另一个滚动视图中,这在一些意想不到的场景中非常有用。例如苹果的 PhotoScroller 应用,全屏显示单张照片,用户可以分页滚动切换照片,还能通过捏合手势缩放当前照片。这是通过嵌套滚动视图实现的,外层滚动视图用于照片分页,内层滚动视图包含当前照片,用于缩放和查看缩放后照片的不同部分。同样,在 WWDC 2013 的视频中,也对 iOS 7 锁屏界面使用嵌套滚动视图的方式进行了解构。
手势识别器( Gesture Recognizers
)极大简化了为滚动视图添加自定义手势的任务。过去,苹果文档中实现双击放大和双指点击缩小的代码使用了传统触摸处理方式,现在只需将相应的手势识别器附加到滚动视图的可缩放子视图上,它们会自动协调各种手势。
过去,要使滚动视图内的元素可拖动,需要将滚动视图的 canCancelContentTouches
属性设置为 false
。但如果不使用传统的直接触摸处理方式,通常无需关注此属性。无论该属性如何设置,像 UISlider
这样的可拖动控件在滚动视图内仍可正常拖动。
以下是一个通过手势识别器实现滚动视图内可拖动对象的示例: