在 UIResponder中存在这么一套方法


- (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent
*)event
__OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_3_0);
 

- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent
*)event
__OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_3_0);

- (void)motionCancelled:(UIEventSubtype)motion withEvent:(UIEvent
*)event
__OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_3_0);



这就是执行摇一摇的方法。那么怎么用这些方法呢?

很简单,你只需要让这个Controller本身支持摇动

同时让他成为第一相应者:

- (void)viewDidLoad

{

    
[superviewDidLoad];

// Do any additional setup after loading the view, typically from a
nib.

    
[[UIApplicationsharedApplication]
setApplicationSupportsShakeToEdit:YES];

[self


becomeFirstResponder];

}

然后去实现那几个方法就可以了

- (void) motionBegan:(UIEventSubtype)motion
withEvent:(UIEvent


*)event

{

    
//检测到摇动

}

- (void) motionCancelled:(UIEventSubtype)motion withEvent:(UIEvent
*)event

{

    
//摇动取消

}
 

- (void) motionEnded:(UIEventSubtype)motion withEvent:(UIEvent
*)event
 

{

    
//摇动结束

    
if
(event.subtype == UIEventSubtypeMotionShake) {

        
//something
happens
 

    
}

}
05-18 17:37