0
在我父視圖控制器我有這樣的:什麼會導致視圖控制器失去firstResponder狀態?
- (BOOL)canBecomeFirstResponder
{
return YES;
}
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
NSLog(@"BECOMING FIRST RESPONDER");
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
[self becomeFirstResponder];
}
- (void) viewWillDisappear:(BOOL)animated {
[[UIApplication sharedApplication] endReceivingRemoteControlEvents];
[self resignFirstResponder];
[super viewWillDisappear:animated];
}
在任何子視圖控制器,我想處理遠程控制的事件我這樣做:
- (void) remoteControlReceivedWithEvent: (UIEvent *) receivedEvent {
if (receivedEvent.type == UIEventTypeRemoteControl) {
switch (receivedEvent.subtype) {
case UIEventSubtypeRemoteControlTogglePlayPause:
{
//do something
break;
}
default:
break;
}
}
}
的問題是事件是在其中一個孩子班上接收到的,但不是另一個孩子班,即使它們非常相似。他們以同樣的方式呈現。它們都不會覆蓋viewDidAppear,所以它們都應該在出現並接收遠程控制事件時成爲第一響應者。
所以我的問題是,有什麼可以使一個視圖控制器失去第一響應者狀態?
編輯: 一些調試日誌顯示視圖控制器實際上是第一響應者。但由於某種原因,它沒有收到這些事件。