Próbuję zaimplementować "tutorial" na temat wstrząsów na tej stronie, ale myślę, że czegoś brakuje. Skopiowałem jego funkcję przyspieszeniomierza do pliku myAppViewController.m i umieściłem tam kilka wpisów, aby sprawdzić, czy funkcja ta wchodzi nawet w funkcję, gdy używam funkcji "wstrząsania" symulatora. Nic nie pojawia się w konsoli debugowania.jak wykrywać i programować w pobliżu wstrząsów dla iPhone'a
http://mithin.in/2009/07/28/detecting-a-shake-using-iphone-sdk
Może ktoś wyjaśnić co I może być brakuje? Lub wskazać mi samouczek?
znalazłem to, co wygląda obiecująco, ale nie wiem jak „umieścić go w UIView” How do I detect when someone shakes an iPhone?
EDIT - teraz tu jest mój kod działa, ponieważ sugestii Zaakceptowanych odpowiedź jest.
Oto mój kod do wykrywania gestu drżenia w 3.0 sdk iphone.
-(BOOL)canBecomeFirstResponder {
return YES;
}
-(void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
[self becomeFirstResponder];
}
- (void)viewWillDisappear:(BOOL)animated {
[self resignFirstResponder];
[super viewWillDisappear:animated];
}
- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event {
NSLog(@"{motion ended event ");
if (motion == UIEventSubtypeMotionShake) {
NSLog(@"{shaken state ");
}
else {
NSLog(@"{not shaken state ");
}
}
Tak, działa w symulatorze. – Neo42
W rzeczywistości wywoływanie 'staćFirstResponder' jest niepotrzebne. Jedyną czynnością, która jest wymagana, aby kontroler viewController zareagował na zdarzenia związane z ruchem, jest zapewnienie, że viewController może stać się firstResponder. Zgodnie z opisem w dokumencie, UIView przekazuje komunikat 'motionBegan' itd. Do łańcucha responderów, który w końcu znajdzie kontroler widoku, o ile' canBecomeFirstResponder' zwróci wartość YES. –