2012-08-23 65 views
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,所以它們都應該在出現並接收遠程控制事件時成爲第一響應者。

所以我的問題是,有什麼可以使一個視圖控制器失去第一響應者狀態?

編輯: 一些調試日誌顯示視圖控制器實際上是第一響應者。但由於某種原因,它沒有收到這些事件。

回答

-1

嘗試以下操作:

[self resignFirstResponder]; 
相關問題