检测摇一摇手势

iOS 设备可以检测摇一摇手势,在本节教程中,我们将学习如何检测摇一摇手势,检测到该手势后,更新 label 的文案。本节教程使用的是 Xcode 8.3 和 iOS 10.3。

设置工程

打开 Xcode,创建一个 Single View Application。

检测摇一摇手势_第1张图片

Product Name 使用IOS10ShakeGestureTutorial,填写自己的 Organization Name 和 Organization Identifier,Language 一栏选择 Swift,Devices 一栏选择 iPhone。

检测摇一摇手势_第2张图片

打开Storyboard,从 Object Library 中拖拽一个 Label 控件放到 View Controller 上,双击 Label 控件将文案修改为“Shake me”。选中该 Label,点击 Auto Layout 的 Align 按钮。选中 “Horizontally in Container”,点击 “Add 1 Constraint”。

检测摇一摇手势_第3张图片

选中 Label,点击 Auto Layout 的 Pin 按钮,选中上边距约束线,点击 “Add 1 Constraint”。

检测摇一摇手势_第4张图片

Storyboard 看起来应如下图所示。

检测摇一摇手势_第5张图片

打开 Assistant Editor,确保ViewController.swift可见。按住 Control 键,将 Label 拖拽到 ViewController 类下,创建下图的 Outlet。

检测摇一摇手势_第6张图片

打开 ViewController.swift 文件,首先要让 View Controller 回应点击事件,可以通过 ViewController FirstResponder 实现,添加下列方法:

overridefuncbecomeFirstResponder()->Bool{

returntrue

}

接下来,要想检测摇一摇手势,添加motionEnded(_:with:)方法。

overridefuncmotionEnded(_motion: UIEventSubtype, with event: UIEvent?){

ifmotion == .motionShake {

shakeLabel.text ="Shaken, not stirred"

}

}

如果确实是一个 Shake Gesture(摇一摇),那么 Label 的文案就会更新。运行工程,摇一摇测试机。可以点击 iOS 模拟器菜单栏 Hardware 选项下的 Shake Gesture 来摇一摇。


检测摇一摇手势_第7张图片

你可能感兴趣的:(检测摇一摇手势)