任何人都知道为什么UIViewController在我运行此代码时不会成为第一响应者:
[self becomeFirstResponder];
NSLog(@"is first resp: %i",[self isFirstResponder]);
在控制台中,我总是看到这句话:“是第一个:0”
我有canBecomeFirstResponder方法:
- (BOOL)canBecomeFirstResponder {
return YES;
}
我甚至不知道下一步该往下看......
答案 0 :(得分:6)
确保在之后将UIViewController设置为第一响应者,并为窗口实例分配了一些视图。
答案 1 :(得分:5)
正如我所怀疑的那样,我对UIViewController
/ firstResponder
用法表示错误。苹果开发论坛中的这个thread专门讨论了如何开始工作。
在要响应的UI元素上调用becomeFirstResponder
。只要链中的其他对象没有实现触摸方法(或者至少继续将它们转发到链中),事件将自动转发到UIViewController
。
附注:为了建立其他人的评论,UIViewController
成为“第一”响应者真的没有意义。第一个响应者应该是具有屏幕表示的对象(UIView
或其子类之一)。
虽然这可能是一个完全不正确的陈述,但UIViewController
中可能存在未记录的行为,因为这些问题导致它无法成为第一个响应者(比我聪明的人可能能够验证其有效性)。
答案 2 :(得分:4)
你在UIViewController中有UIScrollView吗?