【问题标题】:Using IBAction Instead of touchesBegan:使用 IBAction 代替 touchesBegan:
【发布时间】:2012-08-29 21:22:43
【问题描述】:

设置 IBAction 来处理您的触摸事件与使用 touchesBegan: touchesMoved 等之间有什么真正的区别吗?哪些因素会导致一个人比另一个人更受青睐?

【问题讨论】:

    标签: objective-c ios uitouch touchesbegan


    【解决方案1】:

    辅助功能

    如果IBAction 是指附加到UIControlEventTouchUpInside 之类的事件,那么控制事件会附加相当多的“魔法”来复制触摸事件。

    最明显的是,如果您触摸UIButton,然后在释放前将按钮拖出 距离,按钮仍会发送其UIControlEventTouchUpInside 事件。距离是通过可用性实验选择的:当某人仍然认为自己正在按下按钮时,他们的手指可以滑多远?

    我怀疑使用控制事件也会使iOS 6 Guided Access 和其他辅助功能更容易理解您的应用。

    从模型中分离视图

    使用控制事件意味着 View 不需要知道点击时它有什么效果。这在模型-视图-控制器范式中被认为是一件好事。理想情况下,您的 Controller 将收到事件,并更新模型以适应。

    结论

    如果您可以实现与控件事件的交互,最好这样做。

    不过,有时您的控件需要复杂的交互。如果您使用多点触控来实现诸如手指绘画之类的功能,您将需要准确地知道触摸发生的地点和时间。在这种情况下,实现与touchesBegantouchesMovedtouchesEndedtouchesCancelled 的交互。

    【讨论】:

    • 很棒的答案。感谢您的照明。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多