我有一个实现UIKeyInput协议的自定义UIView
- (BOOL) canBecomeFirstResponder{
return YES;
}
Run Code Online (Sandbox Code Playgroud)
在子类中定义.致电时:
[customView becomeFirstResponder];
NSLog(@"is first? %i",[customView isFirstResponder]);
Run Code Online (Sandbox Code Playgroud)
在单击按钮期间,即使 canBecomeFirstResponder已正确设置并且所有UIKeyInput协议功能都已实现,它也会返回false .还有什么东西可以阻止这种观点成为第一个响应者?如果有帮助,它将存在于scrollView和另一个自定义视图中.
更新:
我检查了当前的第一响应者是什么:
UIWindow *keyWindow = [[UIApplication sharedApplication] keyWindow];
UIView *firstResponder = [keyWindow performSelector:@selector(firstResponder)];
Run Code Online (Sandbox Code Playgroud)
而且令人惊讶的firstResponder是nil.所以似乎没有什么可以阻止这些事件.
你覆盖了becomeFirstResponder吗?
子类可以覆盖此方法以更新状态或执行某些操作,例如突出显示选择.
跟进:
子类可以覆盖此方法以更新状态或执行某些操作,例如突出显示选择.
如果当前响应者可以辞退第一响应者状态(canResignFirstResponder)并且新响应者可以成为第一响应者,则响应者对象仅成为第一响应者.
您可以调用此方法来创建响应者对象,例如查看第一响应者.但是,如果它是视图层次结构的一部分,则只应在该视图上调用它.如果视图的window属性包含UIWindow对象,则它已安装在视图层次结构中; 如果它返回nil,则视图将从任何层次结构中分离.
你确认你符合上述所有条件吗?
| 归档时间: |
|
| 查看次数: |
7012 次 |
| 最近记录: |