UIViewController - 无法成为第一响应者

时间:2009-09-24 05:21:21

标签: iphone objective-c uiviewcontroller

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

[self becomeFirstResponder];
NSLog(@"is first resp: %i",[self isFirstResponder]);

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

我有canBecomeFirstResponder方法:

- (BOOL)canBecomeFirstResponder {
return YES;
}

我甚至不知道下一步该往下看......

3 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:5)

更新

正如我所怀疑的那样,我对UIViewController / firstResponder用法表示错误。苹果开发论坛中的这个thread专门讨论了如何开始工作。

原始答案

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

附注:为了建立其他人的评论,UIViewController成为“第一”响应者真的没有意义。第一个响应者应该是具有屏幕表示的对象(UIView或其子类之一)。

虽然这可能是一个完全不正确的陈述,但UIViewController中可能存在未记录的行为,因为这些问题导致它无法成为第一个响应者(比我聪明的人可能能够验证其有效性)。

答案 2 :(得分:4)

你在UIViewController中有UIScrollView吗?