2015-10-05 51 views
3

我似乎無法得到運動檢測方法與Swift 2.0/Xcode 7一起工作。我得到的錯誤表明:'方法不覆蓋任何方法從它的超類'。我想用內置的UIEvent方法來檢測各種運動。下面是我有類Swift 2.0中的motionEnded方法

//this is used for detecting UIEvents i.e. 'Shake' 
    override func canBecomeFirstResponder() -> Bool { 
    return true 
    } 

....

override func motionEnded(motion: UIEventSubtype, withEvent event: UIEvent) 
    { 
     if motion == .MotionShake && randomNumber == SHAKE 
     { 
      print("SHAKE RECEIVED") 
      correctActionPerformed = true 
     } 
     else if motion == .MotionShake && randomNumber != SHAKE 
     { 
      print("WRONG ACTION") 
      wrongActionPerformed = true 
     } 
     else 
     { 
      print("WRONG ACTION") 
      wrongActionPerformed = true 
     } 
    } 

在這裏遇到了同樣的問題裏面:Swift 2 migration problems

回答

4

這裏的問題是,該參數在斯威夫特2.0更新。 UIEvent參數現在是UIEvent ?.爲了避免將來出現這些問題,如果您知道被覆蓋的函數,只需開始輸入「覆蓋函數」,Xcode的自動完成功能就會爲您提供所需的功能。

4

只想添加相同的斯威夫特3 iOS的10:

override var canBecomeFirstResponder: Bool { 
    return true 
} 

override func motionEnded(_ motion: UIEventSubtype, with event: UIEvent?) { 
    if motion == .motionShake && randomNumber == SHAKE 
    { 
     debugPrint("SHAKE RECEIVED") 
     correctActionPerformed = true 
    } 
    else if motion == .motionShake && randomNumber != SHAKE 
    { 
     debugPrint("WRONG ACTION") 
     wrongActionPerformed = true 
    } 
    else 
    { 
     debugPrint("WRONG ACTION") 
     wrongActionPerformed = true 
    } 
}