《iOS 6核心开发手册(第4版)》——1.12节创建自定义的姿势识别器

    xiaoxiao2024-01-06  157

    本节书摘来自异步社区《iOS 6核心开发手册(第4版)》一书中的第1章,第1.12节创建自定义的姿势识别器,作者 【美】Erica Sadun,更多章节内容可以访问云栖社区“异步社区”公众号查看

    1.12 创建自定义的姿势识别器iOS 6核心开发手册(第4版)只需做少量的工作即可把秘诀1-10中所示的代码转换成自定义的识别器,如秘诀1-11中所介绍的那样。子类化UIGestureRecognizer将使你能够构建自己的圆形识别器,并把它添加到应用程序中的视图中。

    首先把UIGestureRecognizerSubclass.h导入新类中。该文件声明了识别器子类重写或自定义所需的一切内容。对于重写的每个方法,都要确保调用该方法的原始版本,这需要在激活新代码前调用超类方法。

    姿势分为两类:连续的和离散的。圆形识别器是离散的,它要么识别一个圆,要么失败。连续的姿势包括捏合和平移,其中识别器在它们的整个生命周期内发送更新。识别器是通过设置其state属性来生成更新的。

    识别器基本上是指尖的状态机。所有的识别器都开始于可能的状态(UIGestureRecognizer StatePossible),然后对于连续的姿势,将经过一系列变化的状态(UIGestureRecognizerStateChanged)。离散的识别器要么成功地识别一种姿势(UIGestureRecognizerStateRecognized),要么失败(UIGestureRecognizerStateFailed),如秘诀1-11中所示。除了将状态设置为可能或失败时之外,每次更新状态时,识别器都会把动作发送给它的目标。

    在秘诀1-11中看到的相当长的注释是子类头文件的礼节性的做法。我在这里包括了它们,因为它们有助于解释重写其超类的关键方法的作用。Reset方法把识别器返回到它的静止状态,允许它使自身准备好迎接下一次识别挑战。

    触摸开始(等)方法是在与它们对应的UIResponder类似的位置调用的,使你能够在触摸生命周期的相同位置执行测试。在触摸结束回调之前,这个示例会一直等待,以检查成功或失败,并且使用秘诀1-10中定义的相同的testForCircle方法。

    注意:作为一种重写哲学,一旦有可能,姿势识别器就会失败。当它们成功时,应该在本地属性中存储关于姿势的信息。圆形识别器应该保存任何检测到的圆,以使用户知道姿势发生在什么位置。

    最新回复(0)