天天看点

《iOS 6核心开发手册(第4版)》——1.2节秘诀:添加简单的直接操作界面

本节书摘来自异步社区《ios 6核心开发手册(第4版)》一书中的第1章,第1.2节秘诀:添加简单的直接操作界面,作者 【美】erica sadun,更多章节内容可以访问云栖社区“异步社区”公众号查看

1.2 秘诀:添加简单的直接操作界面

ios 6核心开发手册(第4版)

在处理直接操作时,设计重点将从uiviewcontroller转移到uiview上。视图(或者更确切地说是uiresponder)构成了直接操作开发的核心。通过自定义从uiresponder类派生的方法来创建基于触摸的界面。

秘诀1-1以触摸的实际应用为中心。这个示例创建了uiimageview的一个子类dragview,并给它添加触摸响应性。作为一个图像视图,支持用户交互(也就是说把setuserinteractionenabled设置为yes)很重要。这个属性会影响该视图的所有子视图以及它本身。大多数视图一般都支持用户交互,但是uiimageview是一个例外,它把大多数初学者都难住了,apple公司显然不认为人们一般会操作它们。

这个秘诀的工作方式是:更新视图的中心,使之匹配屏幕上的触摸的移动。当用户第一次触摸任何dragview时,对象将存储起始位置,作为距离视图原点的偏移量。当用户拖动时,视图将与手指一起移动——总是维持相同的原点偏移量,使得移动感觉上很自然。移动是通过更新对象的中心而发生的。秘诀1-1在每个触摸移动之后都会计算x和y偏移量,并根据这些偏移量调整视图中心。

一旦触摸,视图就会弹出到前面,这是由于touchesbegan:withevent:方法中的调用而引发的。代码告诉拥有dragview的父视图把该视图调出到前面。这允许活动的元素总是出现在界面的最前面。

这个秘诀没有实现触摸结束和触摸取消方法。它感兴趣的只是屏幕上的对象的移动。当用户停止与屏幕交互时,类将不会做更多的工作。

《iOS 6核心开发手册(第4版)》——1.2节秘诀:添加简单的直接操作界面