设置 IBAction 来处理您的触摸事件与使用 touchesBegan: touchesMoved 等之间有什么真正的区别吗?什么考虑会导致一个人比另一个人更受青睐?
问问题
329 次
1 回答
4
可访问性
如果IBAction
您的意思是附加到诸如 之类UIControlEventTouchUpInside
的事件,那么控制事件会附加相当多的“魔法”,这将需要一些工作来复制触摸事件。
最明显的是,如果您触摸 a UIButton
,然后在释放前将按钮拖出一小段距离,按钮仍会发送其UIControlEventTouchUpInside
事件。距离是通过可用性实验选择的:当某人仍然认为自己正在按下按钮时,他们的手指可以滑多远?
我怀疑使用控制事件也会使iOS 6 引导访问和其他辅助功能更容易理解您的应用程序。
将视图与模型分离
使用控制事件意味着 View 不需要知道点击时它有什么效果。这在模型-视图-控制器范式中被认为是一件好事。理想情况下,您的控制器将收到事件,并更新模型以适应。
结论
如果您可以实现与控制事件的交互,则最好这样做。
不过,有时您的控件需要复杂的交互。如果您正在使用多点触控来实现诸如手指绘画之类的东西,您将需要准确地知道触摸发生的地点和时间。在这种情况下,实现与、 和touchesBegan
的touchesMoved
交互。touchesEnded
touchesCancelled
于 2012-08-30T01:07:05.493 回答