2012-08-23 40 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]; 
相关问题