UITextField 不会成为FirstResponder

2024-03-05

我在让文本字段接受成为FirstResponder 指令时遇到问题。

我提供了一种自定义机制来在导航栏中创建标题。我有另一个视图控制器成功地使用了相同的技术。在 viewDidAppear 上我触发:

- (void)addTitleTextField
{
    CGRect textFrame = self.parentViewController.navigationController.navigationBar.frame;
    textFrame.size.width = 300.0;
    textFrame.origin.y = (768.0 - 300.0)/2;
    textFrame.size.height = 30.0;
    textFrame.origin.x = 7.0;
    self.titleTextField = [[UITextField alloc] initWithFrame:textFrame];
    self.titleTextField.placeholder = NSLocalizedString(@"New Multiple Choice Quiz", @"New Multiple Choice Quiz");
    self.titleTextField.borderStyle = UITextBorderStyleRoundedRect;
    self.titleTextField.font = [UIFont boldSystemFontOfSize:20.0];
    self.titleTextField.textAlignment = NSTextAlignmentCenter;
    self.titleTextField.backgroundColor = [UIColor whiteColor];
    self.titleTextField.textColor = [UIColor blackColor];
    self.titleTextField.delegate = self;
    [self.titleTextField setAutocorrectionType:UITextAutocorrectionTypeNo];
    self.titleTextField.clearButtonMode = UITextFieldViewModeWhileEditing;
    [self.titleTextField setAutocapitalizationType:UITextAutocapitalizationTypeNone];
    self.activeTextField = self.titleTextField;
    self.parentViewController.navigationItem.titleView = self.titleTextField;
    [self.titleTextField becomeFirstResponder];
}

self.titleTextField 将允许我设置文本值,但如果您使用 canBecomeFirstResponder 检查它会返回 NO。正如你所看到的,我在parentViewController 上设置了这个。我尝试使用委托来尝试让parentViewController 来设置它。当我执行委托并检查 textField 是否 canBecomeFirstResponder 时,它返回 YES,但我仍然无法使其接受 firstResponder 订单。有任何想法吗?文档说“如果当前响应者可以放弃第一响应者状态(canResignFirstResponder)并且新响应者可以成为第一响应者,则响应者对象仅成为第一响应者”。


您是否告诉 UITextField 成为后台线程上的选择器?

[textField performSelectorOnMainThread:@selector(becomeFirstResponder) withObject:nil 
  waitUntilDone:YES];

基本原理:在主线程以外的方法上调用 UIKit 方法(即更新视图)将不起作用。 。这可能正在发生。 (尚不清楚 addTitleTextField 方法是从哪里调用的)。

是否还有其他急救人员需要一些时间才能辞职?

[textField performSelectorOnMainThread:@selector(becomeFirstResponder) withObject:nil afterDelay:0.0];

基本原理:如果另一个字段挂在第一响应程序上(或正在放弃它),它将给它时间来清理放弃,直到下一个运行循环。 。 。 。 。通常下一个运行循环将有足够的时间让前一个响应者进行清理,或者您可以尝试像 0.05 这样的短暂延迟。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UITextField 不会成为FirstResponder 的相关文章

随机推荐

  • C++ 11 标准是否保证 std::atomic<> 实现为无锁操作?

    我正处于一个十字路口 我试图在基于互斥锁的数据结构和无锁 可能还有无等待 数据结构之间选择一个 在深入挖掘时 我没有发现有关 C 11 标准是否支持原子类型的无锁操作的任何消息 甚至对于基于宽度的积分 例如atomic uint32 t 换
  • 半透明 JFrame 边框

    我想让 JFrame 边框透明 所以我尝试使用我自己的 Border 类来做到这一点 private class ShadowBorder extends AbstractBorder private static final int RA
  • Java 中字符串(非结构化数据)的 K 最近邻实现

    我正在寻找 Java 中针对非结构化数据的 K 最近邻算法的实现 我发现了许多数字数据的实现 但是我如何实现它并计算文本 字符串 的欧几里得距离 以下是 double 的一个示例 public static double Euclidean
  • Python:如何使用 OpenCV 从网络摄像头捕获图像

    我想使用 OpenCV 从网络摄像头捕获并保存大量图像 这是我目前的代码 import cv2 camera cv2 VideoCapture 0 for i in range 10 return value image camera re
  • React Native导航组件路由问题

    新的反应本机用户在这里 我遇到了问题 不知道如何继续 我能够正确运行反应导航 然后开始收到错误 路由组件必须是 React 组件 但除非我遗漏了某些内容 否则我相信我引用的组件is一个反应组件 请参阅下面的 index android js
  • 如何转义 Ansible YAML 文件中字符串中的冒号?

    我想在安装过程中更改文件 var www kibana config js 中的一行代码 elasticsearch http window location hostname 9200 to elasticsearch http 192
  • Shell 脚本用户提示/输入

    这是别人写的一个粗略的 korn shell 脚本 我对使用 shell 语法不太了解 我什至不确定这是否可行 有什么方法可以让我运行这个文件并提示输入日期 这样我就不必每次都手动进入脚本并更改它 例如 我想将 1 12 09 替换为从用户
  • Qt:将变量传递给子项目

    我的项目的结构如下 Proj Proj pro subProj subProj pro subsubProj subsubProj pro 有没有一种方法可以在 subProj pro 中实例化全局变量并调用它 例如subsubProj p
  • Scala双重定义(2个方法具有相同的类型擦除)

    我用 scala 编写了这个 但它无法编译 class TestDoubleDef def foo p List String def foo p List Int 编译器通知 error double definition error m
  • .Net WikiText 到 HTML 解析器 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我知道 我知道 这听起来很愚蠢 但似乎没有开源强大的 NET 库可以将 Wikitext 解析为 HT
  • Python、Numpy、OpenCV——创建修改后的(同样快的)“addWeighted”函数

    我正在用 python 编写一个程序 该程序使用的函数与addWeightedopenCV 中的函数 不同之处在于 它实际上并不添加表示图像的 numpy 数组 而是采用在任何特定坐标处更亮的像素并使用该值 然而 我发现 尽管这些函数做的事
  • 有没有办法在 Azure Static Web App 中查看文件?

    有没有办法使用Azure Portal查看上传到Azure Static Web App的文件 我需要检查一些项目 我可以在 DevOps Repo 中看到该文件 但想确认它位于 Azure Static Web App 中的正确文件夹结构
  • 如何将参数发送到前置过滤器?

    我想在我的应用程序控制器中创建一个 before filter 方法 如下所示 def check role role name unless logged in user has role role name flash notice A
  • 伪造 HTTP 请求响应以在 Android 中进行测试

    我正在编写一个 Android 应用程序 有时需要通过 HTTP 从 REST API 请求数据 我正在使用 Apache DefaultHttpClient 来执行请求 有没有办法为此应用程序编写测试并在运行测试时 替换 DefaultH
  • 迭代前默认选择 Angular 设置下拉选择选项

    我有一个选择下拉菜单 并从列表中迭代选项 我试图设置为选定的单独选项 作为默认值 以防用户未选择值 以下是我尝试实现的方法
  • 在 XCode 中找不到应用程序证明功能

    根据 App Check Firebase 文档 据说可以将 App Attest 功能添加到您的应用程序中 但是 我在 XCode 中找不到任何此类功能 对此有什么见解吗 注意 我们已在配置文件中启用功能 文档链接 https fireb
  • 当通过开发工具查看时,Selenium WebDriver 无法找到页面源中不存在但 HTML 中存在的元素

    我正在使用 Selenium Web Driver HtmlUnitDriver 来搜索网页上的元素 我只能搜索页面源中可见的那些元素 不过 我可以使用 Internet Explorer 开发人员工具 F12 查看这些元素的详细信息 当我
  • 无法为字符串生成正则表达式

    我有一根绳子abc 123 243 xyz 432 567 我想生成一个与特定字符串匹配的正则表达式 应根据以下示例和具体结果来测试正则表达式 Exp 1 abc 123 234 xyz 432 567 123存在于 123 243 结果
  • 使用 jQuery 隐藏本机工具提示

    当用户将鼠标悬停在具有标题属性的锚标记上时 是否有办法隐藏本机工具提示操作 我不想删除它 只是不显示默认工具提示操作的令人讨厌的黄色框 UPDATE 在阅读了其他几篇文章后 我认为我无法隐藏本机工具提示操作的标题属性 但我试图跳出框框思考
  • UITextField 不会成为FirstResponder

    我在让文本字段接受成为FirstResponder 指令时遇到问题 我提供了一种自定义机制来在导航栏中创建标题 我有另一个视图控制器成功地使用了相同的技术 在 viewDidAppear 上我触发 void addTitleTextFiel