標籤:
我知道的搖一搖有以下2種方案:
一、直接用系統內建的motionBegan方法
-(void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event
假如程式不響應此方法,試著加入下面方法:
-(BOOL)canBecomeFirstResponder
{
return YES;
}
如果還不行,建議用第二種方法。
二、motionBegan+通知的方法
1.在Appdelegate裡寫motionBegan方法
-(void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event
{
[[NSNotificationCenterdefaultCenter]postNotificationName:@"shake"object:self];
}
2.在需要接收通知的頁面添加通知
[[NSNotificationCenterdefaultCenter]addObserver:selfselector:@selector(shakeAction)name:@"shake"object:nil];
寫在viewDidLoad裡即可。
這裡的shakeAction就是搖一搖需要調用的方法,自己修改,通知名字對應就好,可自由修改。
三.補充搖一搖的其他方法
/** 搖一搖結束(需要在這裡處理結束後的代碼) */
- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event
{
// 不是搖一搖運動事件
if (motion != UIEventSubtypeMotionShake) return;
NSLog(@"motionEnded");
}
/** 搖一搖取消(被中斷,比如突然來電) */
- (void)motionCancelled:(UIEventSubtype)motion withEvent:(UIEvent *)event
{
NSLog(@"motionCancelled");
}
iOS 搖一搖事件