作者:Arthur Knopper,原文鏈接,原文日期:2017-04-18
譯者:Crystal Sun义屏;校對(duì):way;定稿:shanks
iOS 設(shè)備可以檢測(cè)搖一搖手勢(shì),在本節(jié)教程中闽铐,我們將學(xué)習(xí)如何檢測(cè)搖一搖手勢(shì)蝶怔,檢測(cè)到該手勢(shì)后,更新 label 的文案兄墅。本節(jié)教程使用的是 Xcode 8.3 和 iOS 10.3踢星。
設(shè)置工程
打開 Xcode,創(chuàng)建一個(gè) Single View Application隙咸。
Product Name 使用 IOS10ShakeGestureTutorial沐悦,填寫自己的 Organization Name 和 Organization Identifier,Language 一欄選擇 Swift五督,Devices 一欄選擇 iPhone藏否。
打開 Storyboard,從 Object Library 中拖拽一個(gè) Label 控件放到 View Controller 上充包,雙擊 Label 控件將文案修改為 “Shake me”副签。選中該 Label,點(diǎn)擊 Auto Layout 的 Align 按鈕基矮。選中 “Horizontally in Container”淆储,點(diǎn)擊 “Add 1 Constraint”。
選中 Label家浇,點(diǎn)擊 Auto Layout 的 Pin 按鈕本砰,選中上邊距約束線,點(diǎn)擊 “Add 1 Constraint”蓝谨。
Storyboard 看起來(lái)應(yīng)如下圖所示灌具。
打開 Assistant Editor青团,確保 ViewController.swift 可見譬巫。按住 Control 鍵,將 Label 拖拽到 ViewController 類下督笆,創(chuàng)建下圖的 Outlet芦昔。
打開 ViewController.swift 文件,首先要讓 View Controller 回應(yīng)點(diǎn)擊事件娃肿,可以通過(guò) ViewController FirstResponder 實(shí)現(xiàn)咕缎,添加下列方法:
override func becomeFirstResponder() -> Bool {
return true
}
接下來(lái),要想檢測(cè)搖一搖手勢(shì)料扰,添加 motionEnded(_:with:) 方法凭豪。
override func motionEnded(_ motion: UIEventSubtype, with event: UIEvent?) {
if motion == .motionShake {
shakeLabel.text = "Shaken, not stirred"
}
}
如果確實(shí)是一個(gè) Shake Gesture(搖一搖),那么 Label 的文案就會(huì)更新晒杈。運(yùn)行工程嫂伞,搖一搖測(cè)試機(jī)。可以點(diǎn)擊 iOS 模擬器菜單欄 Hardware 選項(xiàng)下的 Shake Gesture 來(lái)?yè)u一搖帖努。
可以從 github 上下載 IOS10ShakeGestureTutorial 教程的源代碼撰豺。
本文由 SwiftGG 翻譯組翻譯,已經(jīng)獲得作者翻譯授權(quán)拼余,最新文章請(qǐng)?jiān)L問(wèn) http://swift.gg污桦。