我在視圖控制器中放置了motionBegan:withEvent:方法,以查看它是否可以工作,但未被調用。在viewWillAppear
中,我讓視圖控制器成爲第一響應者,並從canBecomeFirstResponder
返回YES。將搖動手勢事件傳遞給應用程序代理
此視圖控制器位於分割視圖的主窗格中,因此也許在我搖動設備之前更改了第一個響應者。
但我真正的問題是如何將所有運動事件傳遞給我的應用程序委託中的處理程序?我是否真的必須擁有motionBegan:withEvent:所有視圖控制器中的方法或委託給所有第一響應者?沒有一種方法可以讓事件像這樣流入響應者鏈而無需將代碼插入每個UIResponder?似乎會有,但我沒有把手指放在如何做到這一點上。
感謝您展示UIApplication類和UIApplicationMain函數如何與此綁定。這是一個我不熟悉的領域,看起來它非常有用。如果我理解了這個權利(今晚我會試試它),那麼在UIApplication的子類中,我可以攔截所有發生在'sendEvent :',對那些我想要立即解決的問題採取行動(如搖動),然後爲那些應該進行正常處理的人調用[super sendEvent:event]。 – Jim
UIApplication的子類很完美。對於任何感興趣的人,即使設備在用戶口袋裏,搖晃事件也可能發生。一些額外的過濾將是必要的。 – Jim