自定义UIView和becomeFirstResponder

我有一个实现UIKeyInput协议的自定义UIView

 - (BOOL) canBecomeFirstResponder{ return YES; } 

在子类中定义。 致电时:

 [customView becomeFirstResponder]; NSLog(@"is first? %i",[customView isFirstResponder]); 

在按钮单击期间, 即使正确设置了UIKeyInput并且实现了所有UIKeyInput协议function,它也会返回false。 还有什么东西阻止这种观点成为第一个响应者? 如果有帮助,它将存在于scrollView和另一个自定义视图中。

更新:

我检查了当前的第一响应者是什么:

 UIWindow *keyWindow = [[UIApplication sharedApplication] keyWindow]; UIView *firstResponder = [keyWindow performSelector:@selector(firstResponder)]; 

令人惊讶的是,第一个firstRespondernil 。 所以似乎没有什么可以阻止这些事件。

你是否覆盖了becomeFirstResponder

子类可以覆盖此方法以更新状态或执行某些操作,例如突出显示选择。

跟进:

子类可以覆盖此方法以更新状态或执行某些操作,例如突出显示选择。

如果当前响应者可以辞退第一响应者状态(canResignFirstResponder)并且新响应者可以成为第一响应者,则响应者对象仅成为第一响应者。

您可以调用此方法来创建响应者对象,例如查看第一响应者。 但是,如果它是视图层次结构的一部分,则只应在该视图上调用它。 如果视图的window属性包含UIWindow对象,则它已安装在视图层次结构中; 如果它返回nil,则视图将从任何层次结构中分离。

你确认你符合上述所有条件吗?