UIViewController - 无法成为第一响应者

Den*_*kov 6 iphone objective-c uiviewcontroller

任何人都知道为什么UIViewController在运行此代码时不会成为第一响应者:

[self becomeFirstResponder];
NSLog(@"is first resp: %i",[self isFirstResponder]);
Run Code Online (Sandbox Code Playgroud)

在控制台中,我总是看到这句话:"是第一个:0"

我有canBecomeFirstResponder方法:

- (BOOL)canBecomeFirstResponder {
return YES;
}
Run Code Online (Sandbox Code Playgroud)

我甚至都不知道下一步要去哪儿....

小智 6

在为窗口实例分配了一些视图后,请确保将UIViewController设置为第一响应者.


Cor*_*oyd 5

更新资料

正如我所怀疑的那样,我认为使用UIViewController/ firstResponder使用是错误的。这线程在苹果开发论坛专门谈论越来越颤抖工作。

原始答案

调用becomeFirstResponder要响应的UI元素。UIViewController只要链中没有其他对象实现touchs方法(或至少继续沿链向上转​​发它们),事件将自动转发到。

旁注:以其他人的意见为基础,将a UIViewController设为“第一”响应者确实没有任何意义。第一响应者应该是具有屏幕上表示形式的对象(UIView或其子类之一)。

尽管这可能是完全不正确的陈述,但UIViewController由于存在这些问题,可能会导致未记录的行为而 使其无法成为firstResponder(比我聪明的人也许可以验证这一点的有效性)。