【问题标题】:What would cause a view controller to lose firstResponder status?什么会导致视图控制器失去 firstResponder 状态?
【发布时间】:2012-08-23 00:51:23
【问题描述】:

在我的父视图控制器中,我有这个:

- (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,因此它们在出现并接收远程控制事件时都应该成为第一响应者。

所以我的问题是,是什么导致单视图控制器失去第一响应者状态?

编辑: 一些调试日志显示视图控制器实际上是第一响应者。但由于某种原因,它没有收到事件。

【问题讨论】:

    标签: ios events uiviewcontroller first-responder


    【解决方案1】:

    尝试以下方法:

    [self resignFirstResponder];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多