becomeFirstResponder 似乎仅第一次用于摇动手势
Posted
技术标签:
【中文标题】becomeFirstResponder 似乎仅第一次用于摇动手势【英文标题】:becomeFirstResponder seems to work only 1st time for shake gesture 【发布时间】:2009-08-15 15:07:13 【问题描述】:我通过在 UIViewController 中执行此操作来使我的应用摇动手势兼容:
- (void)viewWillAppear:(BOOL)animated
[self.view becomeFirstResponder];
[super viewWillAppear:animated];
问题是,当我翻转到另一个视图时(我正在使用具有翻转视图和根视图控制器的“实用程序”模板来管理它们),当我回来时,摇动手势停止工作。
我看到调用了viewWillAppear
方法,但视图似乎没有第二次重新获得第一响应者状态。
【问题讨论】:
【参考方案1】:谁知道 .. 你必须在viewDidAppear
中拨打becomeFirstResponder
而不是viewWillAppear
。
【讨论】:
我遇到了同样的问题!我想我在 App Dev 论坛之一上找到了答案。【参考方案2】:是的,这证实了我......我试图将控制器设置为来自应用程序委托的 firstResponder。同时,我发现在策略方法中撒上这条日志语句对调试很有帮助。
NSLog(@"%s: I %s first responder! (%@)", __FUNCTION__, [self isFirstResponder] ? "am" : "am not", self);
另外,为了让我可以在任意时间触发它,我启用了“orientation”方法并把它放在那里。
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
NSLog(@"%s: I %s first responder! (%@)", __FUNCTION__, [self isFirstResponder] ? "am" : "am not", self);
return YES;
【讨论】:
以上是关于becomeFirstResponder 似乎仅第一次用于摇动手势的主要内容,如果未能解决你的问题,请参考以下文章
应该总是在主线程上调用 becomeFirstResponder() 吗?
在 UITableViewController textfield.becomeFirstResponder() 中不滚动 tableview