1
如何在iOS 4.0+中使用搖動事件?我測試了這個解決方案,但在4.1中不工作。是否有可能改變了某些東西或者我在做錯什麼? motionBegan: Not Working搖動iPhone 4.0+
如何在iOS 4.0+中使用搖動事件?我測試了這個解決方案,但在4.1中不工作。是否有可能改變了某些東西或者我在做錯什麼? motionBegan: Not Working搖動iPhone 4.0+
從這個SO質疑How do I detect when someone shakes an iPhone? 主要伎倆是,你需要有一些的UIView(不視圖控制器)要作爲firstResponder接收震動的事件消息。下面是你可以在任何的UIView用於獲取動搖事件的代碼:
@implementation ShakingView
- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event
{
if (event.subtype == UIEventSubtypeMotionShake)
{
// Put in code here to handle shake
}
if ([super respondsToSelector:@selector(motionEnded:withEvent:)])
[super motionEnded:motion withEvent:event];
}
- (BOOL)canBecomeFirstResponder
{ return YES; }
@end
您可以輕鬆地將任何UIView的(甚至系統的意見)到一種意見認爲,可以通過與僅這些子類的觀點簡單地得到搖事件方法(然後在IB中選擇這個新類型而不是基類型,或者在分配視圖時使用它)。
在視圖控制器,你要設置這個觀點,成爲第一個響應者:
- (void) viewWillAppear:(BOOL)animated
{
[shakeView becomeFirstResponder];
[super viewWillAppear:animated];
}
- (void) viewWillDisappear:(BOOL)animated
{
[shakeView resignFirstResponder];
[super viewWillDisappear:animated];
}
不要忘了,如果你有成爲從用戶操作第一響應者(如搜索欄等觀點或文本輸入字段),當另一個視圖退出時,您還需要恢復抖動視圖第一響應者狀態!
即使您將applicationSupportsShakeToEdit設置爲NO,此方法仍然有效。
Infact我有一個UIViewController類..有什麼辦法讓我的UIVIewController成爲一個UIView沒有重新編碼evrythinG? – 2011-04-07 08:27:54
呃...一個UIViewController有一個視圖 - 類似於'myViewController.view'就能讓你看到它。 – SK9 2011-04-07 23:08:56