首页 理论教育 iOS设备动作事件的处理方法

iOS设备动作事件的处理方法

时间:2023-06-23 理论教育 版权反馈
【摘要】:当用户对iOS设备进行一些物理上的运动,比如摇一摇,那么系统将会产生动作事件。相比于触摸,动作事件的处理要简单得多。系统发出的消息中,只会携带这些动作事件的开始和结束时间,并没有中间过程的信息,也就是说动作事件只有开始和结束,没有过程。一个常见的动作是摇一摇,即UIEvent.EventSubtype.motionShake指示。motion是一个表示动作事件的子类型的枚举值。我们可以在这三个方法中实现自己的动作事件响应。

iOS设备动作事件的处理方法

当用户对iOS设备进行一些物理上的运动,比如摇一摇,那么系统将会产生动作事件。如何触发这些事件则归功于设备中的硬件——加速度计。加速度计会时时告诉系统当前的加速度情况,系统通过模式识别的方式来判断其事件类型,一旦识别到有动作事件发生,就会创建一个UIEvent并传递给响应者进行处理。

相比于触摸,动作事件的处理要简单得多。系统发出的消息中,只会携带这些动作事件的开始和结束时间,并没有中间过程的信息,也就是说动作事件只有开始和结束,没有过程。

触摸事件的方法中会包含一个UITouch实例的集合,但是动作事件只有一个UIEvent实例,这个UIEvent实例中只有事件类型、事件子类型以及时间信息。

为了处理动作事件,UIResponder的子类可以覆写如下三种方法:

motion是一个表示动作事件的子类型的枚举值。一个常见的动作是摇一摇,即UIEvent.EventSubtype.motionShake指示。motionBegan将会在动作已经开始之后调用,而motionEnded则会在动作已经结束时调用,motionCancelled与之前touchesCancelled一样会在其他应用中断事件时调用。用户让设备开始运动起来之后,系统就会通过motionBegan的调用向第一响应者发送一个运动事件,如果第一响应者不能处理,该事件就在响应链中传递;如果运动持续时间小于1秒,系统就会调用motionEnded方法;如果运动持续时间长,或者系统确定当前的动作不能识别,则会调用motionCancelled方法;如果动作事件沿着响应者链传递到窗口还未处理,并且UIApplication实例的applicationSupportsShakeToEdit属性被设置为true时,系统会弹出一个带有撤销(Undo)和重做(Redo)的警示框,这个属性的值在默认情况下为false。(www.xing528.com)

我们可以在这三个方法中实现自己的动作事件响应。比如在motionBegan和motionEnded之间记录一些设备硬件的值(加速度计、地理位置、磁场等),这些信息可以用于不同的场景,满足应用的需求。

motion是一个表示动作事件的子类型的枚举值。一个常见的动作是摇一摇,即UIEvent.EventSubtype.motionShake指示。motionBegan将会在动作已经开始之后调用,而motionEnded则会在动作已经结束时调用,motionCancelled与之前touchesCancelled一样会在其他应用中断事件时调用。用户让设备开始运动起来之后,系统就会通过motionBegan的调用向第一响应者发送一个运动事件,如果第一响应者不能处理,该事件就在响应链中传递;如果运动持续时间小于1秒,系统就会调用motionEnded方法;如果运动持续时间长,或者系统确定当前的动作不能识别,则会调用motionCancelled方法;如果动作事件沿着响应者链传递到窗口还未处理,并且UIApplication实例的applicationSupportsShakeToEdit属性被设置为true时,系统会弹出一个带有撤销(Undo)和重做(Redo)的警示框,这个属性的值在默认情况下为false。

我们可以在这三个方法中实现自己的动作事件响应。比如在motionBegan和motionEnded之间记录一些设备硬件的值(加速度计、地理位置、磁场等),这些信息可以用于不同的场景,满足应用的需求。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈