Gesturizer:在3D-Touch设备上为iOS应用启用手势交互

取决于上下文和任务,由手写笔或手指在移动设备上进行的手势比与按钮和菜单进行标准交互更有效和方便。 然而,手势和相关命令的记忆引起一些困难。 另外,由于有限的屏幕空间和屏幕上已经存在的可单击/可移动UI元素,将手势交互应用于应用程序的操作受到限制。 为了解决这些问题,让我介绍一下iOSGesturizer库。

简而言之,该库允许在3D触摸设备上运行的任何iOS应用上基于单笔划手势的交互,而不会干扰现有的UI元素。 有关更多详细信息,让我们仔细看一下该示例。

这是他们的教程中使用的简单的Apple的FoodTracker项目。 通过CocoaPods将iOSGesturizer导入此项目后,从该项目中打开两个文件。

在AppDelegate.swift文件中,初始化窗口:UIWindow变量作为GesturizerWindow类的实例:

  var window:UIWindow?  = GesturizerWindow() 

现在打开文件MealTableViewController.swift并添加以下内容:


覆盖func viewDidAppear(_动画:布尔){
super.viewDidAppear(动画)
让window = UIApplication.shared.keyWindow! 如! 手势窗口
让view = GesturizerView()
view.gestureHandler = {
让警报= UIAlertView()
alert.message = view.names [索引]
alert.addButton(withTitle:“确定”)
alert.show()
}
window.setGestureView(视图:视图)
}

通过gestureHandler,我们定义了手势侦听器方法。 在这种情况下,手势名称(剪切,复制或粘贴)会在警报消息中弹出。 现在,运行项目:

如您所见,该应用程序可识别三种类型的手势。 要显示可能的手势(例如左侧),您需要用力触摸并等待一秒钟,然后用手指进行所需的动作。 学习后,您无需等待即可执行手势(右侧示例)。

从体系结构的角度来看,这整个过程看起来像这样:

GesturizerWindow首先处理所有屏幕触摸,并确定是否将事件传递给GesturizerView或下面的视图。 值得一提的是,只有GesturizerView才需要在“训练模式”下显示手势,而在GesturizerWindow中则需要进行按压力和手势识别的处理。 对我们来说幸运的是,GesturizerWindow不会在应用程序中造成延迟,因为手势是使用快速简单的算法1 $ -Recognizer识别的,不需要训练数据也无需学习。

如果您认为这个想法很有趣,那么我正在等待请求。

PS我计划添加一般自定义手势和参数的功能。