将 App 委托设置为第一响应者

Posted

技术标签:

【中文标题】将 App 委托设置为第一响应者【英文标题】:Set App delegate as first responder 【发布时间】:2011-11-11 20:52:11 【问题描述】:

我正在尝试实现在整个应用程序中都有效的抖动识别。为此,我将以下代码添加到我的 xxxAppDelegate.m:

-(BOOL)canBecomeFirstResponder 
    return YES;


- (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event 
    if (event.type == UIEventSubtypeMotionShake) 
        NSLog(@"Shaken, not stirred.");
    

但是因为在 .h 文件中,委托被定义为

@interface xxxAppDelegate : NSObject <UIApplicationDelegate, UITabBarControllerDelegate>

我无法使用

[self becomeFirstResponder];

在 .m 中使应用程序成为第一响应者。因此,它当然行不通。 让它发挥作用的最佳方法是什么?

【问题讨论】:

【参考方案1】:

如果您将应用委托更改为 UIResponder 的子类会怎样?

编辑

您可以在文档中阅读有关响应者链 here 的信息。

【讨论】:

以上是关于将 App 委托设置为第一响应者的主要内容,如果未能解决你的问题,请参考以下文章

如何正确地将 UITextField 设为第一响应者? (尝试了3种方法)

我希望 UITableViewCell 中的 UItextField 仅在单元格触摸时成为第一响应者

将 UITextView 作为第一响应者后,表格视图单元格不可选择

Subview 不会成为第一响应者

ObjC iOS11:在 inputAccessoryView 中成为第一响应者时,TextField 不显示

神秘的第一响应者变化