<아이폰 흔들기(shaking) 검사>

 
1. First responder 되기
사용자의 흔들기 이벤트를 처리할 ViewController는 그 자신이 First responder가 되어야 한다. 
becomFirstResponder 메소드를 호출하고 canBecomeFirstResponder 메소드에서 YES를 반환.
 
- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    [self becomeFirstResponder];
}
 
- (BOOL)canBecomeFirstResponder {
    return YES;
}
 
viewDidAppear는 코드에서 서브뷰로 추가될 때만 호출된다. 

IB(Interface Builder)에서 바로 Window에 View를 추가하였으면 awakeFromNib등의 메소드에서 becomFirstResponder를 호출해야한다.
 


2. motion 메소드 구현
사용자의 흔들기가 시작되면 해당 motionBegan이 호출되고 종료될 때 motionEnded가 호출된다. 
지나치게 많이 흔들거나 하여 유효하지 않은 흔들기로 판단될 때는 motionCancelled가 호출된다.
 
- (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event {
    NSLog(@"Shaking start");
}
 
- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event {
    NSLog(@"Shaking end");
}
 
- (void)motionCancelled:(UIEventSubtype)motion withEvent:(UIEvent *)event {
    NSLog(@"Shaking cancel"); 
}
 
 
motionEnded 메소드에 사용자의 흔들기가 끝난 후 실행할 코드를 추가하면, 간단하게 흔들기시 동작을 설정할 수 있다.

반응형