2016-01-13 7 views
5

में शेक का पता लगाना मैं स्विफ्ट में ऐपडिलेगेट (पूरे ऐप में) में डिवाइस शेक का पता कैसे लगा सकता हूं?AppDelegate

मुझे ऐसे उत्तरों मिल गए हैं जो वर्णन नियंत्रक में ऐसा करने का वर्णन करते हैं, लेकिन मेरे ऐप में ऐसा करने की तलाश में हैं।

+2

संभावित डुप्लिकेट [मैं पता कैसे लगाते हैं जब कोई एक iPhone हिला?] (Http://stackoverflow.com/questions/150446/how-do-i-detect- निम्नलिखित स्निपेट जोड़ सकते हैं जब-कोई-शेक्स-ए-आईफोन) – fishinear

उत्तर

7

अपने AppDelegate में निम्नलिखित स्निपेट जोड़ें:

override func motionBegan(motion: UIEventSubtype, withEvent event: UIEvent?) { 
    if motion == .MotionShake { 
     print("Device shaken") 
    } 
} 

स्विफ्ट 3.0 संस्करण:

override func motionBegan(_ motion: UIEventSubtype, with event: UIEvent?) { 
    if motion == .motionShake { 
     print("Device shaken") 
    } 
} 
+2

यह काम नहीं करता है, क्योंकि ऐप प्रतिनिधि उत्तरदाता श्रृंखला में नहीं है। – phatmann

+0

स्विफ्ट 3 –

+0

@SaRaVaNandM में काम नहीं कर रहा है, यकीन है कि यह अभी परीक्षण किया गया है और पहले इसका परीक्षण किया है। क्या आपको कोई त्रुटि मिली? आपने इसे कैसे कार्यान्वित किया? –

6

आप शेक गति का पता लगाने के लिए विश्व स्तर चाहते हैं, UIWindow लागू करता UIResponder कि शेक प्राप्त कर सकते हैं गति घटना। आप AppDelegate को

extension UIWindow { 
    open override func motionEnded(_ motion: UIEventSubtype, with event: UIEvent?) { 
     if motion == .motionShake { 
      print("Device shaken") 
     } 
    } 
} 
की
+0

यह मेरे लिए काम किया। बस इसे जोड़ने (UIWindow एक्सटेंशन के बिना) जब मैं इसे ऐप प्रतिनिधि में डालता हूं तो काम नहीं करता था। आईओएस 10.3/एक्सकोड 8.3 के लिए func के सामने 'ओपन' जोड़ना पड़ा। –

+0

काफी अजीब, गतिबेगन बुलाया जाता है, लेकिन गति समाप्त नहीं होता है। – User9527

संबंधित मुद्दे