2015-11-03 9 views
6

Ich entwickle eine App mit einem Gesten-System, im Grunde, wenn ich das iPhone nach links drehen meine App wird eine Funktion, wenn ich das iPhone nach rechts, andere Funktion, mit anderen Gesten drehen.Detect Schütteln Geste IOS Swift

Ich habe keine Idee, wie man damit arbeitet, ich versuche Suche in Google, aber nicht arbeiten, das Ergebnis ist nur Touch-Geste und nicht Bewegung Geste.

jemand eine Anleitung, um mir zu helfen?

+0

Ich schlage vor, Sie suchen für Motion Events: https://developer.apple.com/library/ios/documentation/EventHandling/Conceptual/EventHandlingiPhoneOS/motion_event_basics/ motion_event_basics.html – dalipsia

Antwort

7

Super einfach zu implementieren:

1) Lassen Sie iOS wissen, welche View-Controller die erste in der Responder-Kette ist:

override func viewDidLoad() { 
    super.viewDidLoad() 
    self.becomeFirstResponder() 
} 
override func canBecomeFirstResponder() -> Bool { 
    return true 
} 

2) Behandeln Sie das Ereignis in irgendeiner Art und Weise:

override func motionEnded(motion: UIEventSubtype, withEvent event: UIEvent?) { 
    if(event.subtype == UIEventSubtype.MotionShake) { 
     print("You shook me, now what") 
    } 
} 
20

Swift3 ios10:

override func viewDidLoad() { 
    super.viewDidLoad() 
    self.becomeFirstResponder() // To get shake gesture 
} 

// We are willing to become first responder to get shake motion 
override var canBecomeFirstResponder: Bool { 
    get { 
     return true 
    } 
} 

// Enable detection of shake motion 
override func motionEnded(_ motion: UIEventSubtype, with event: UIEvent?) { 
    if motion == .motionShake { 
     print("Why are you shaking me?") 
    } 
} 
+2

Gut für Swift 4 und iOS 11! –

0

Speedy99 die rasche Antwort ist in der Objective-C-Version

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    [self becomeFirstResponder]; 
} 

- (BOOL)canBecomeFirstResponder{ 
    return true; 
} 

- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event{ 
    if(event.subtype == UIEventSubtypeMotionShake){ 
     NSLog(@"Why are you shaking me?"); 
    } 
}