iOS 設(shè)備可以檢測(cè)搖一搖手勢(shì)魔市,在本節(jié)教程中针饥,我們將學(xué)習(xí)如何檢測(cè)搖一搖手勢(shì)凌摄,檢測(cè)到該手勢(shì)后笤成,更新 label 的文案评架。本節(jié)教程使用的是 Xcode 8.3 和 iOS 10.3。
設(shè)置工程
打開(kāi) Xcode炕泳,創(chuàng)建一個(gè) Single View Application纵诞。
Product Name 使用IOS10ShakeGestureTutorial,填寫自己的 Organization Name 和 Organization Identifier培遵,Language 一欄選擇 Swift浙芙,Devices 一欄選擇 iPhone。
打開(kāi)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)如下圖所示蛉迹。
打開(kāi) Assistant Editor,確保ViewController.swift可見(jiàn)放妈。按住 Control 鍵北救,將 Label 拖拽到 ViewController 類下,創(chuàng)建下圖的 Outlet芜抒。
打開(kāi) ViewController.swift 文件珍策,首先要讓 View Controller 回應(yīng)點(diǎn)擊事件,可以通過(guò) ViewController FirstResponder 實(shí)現(xiàn)宅倒,添加下列方法:
overridefuncbecomeFirstResponder()->Bool{
returntrue
}
接下來(lái)攘宙,要想檢測(cè)搖一搖手勢(shì),添加motionEnded(_:with:)方法拐迁。
overridefuncmotionEnded(_motion: UIEventSubtype, with event: UIEvent?){
ifmotion == .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一搖。