UITextField 在视图出现后丢失firstResponder

2024-03-10

我有一个UIPageViewController。一个页面有一个按钮,另一页有一个UITextField有一个按钮。当页面滚动到带有字段的视图时,我希望它becomeFirstResponder并打开键盘。发生的情况如下:

  • I call [self.locationQuery becomeFirstResponder]视图控制器的viewDidAppear方法。但它永远不会打开键盘。

  • 我也做同样的事情viewWillAppear,并且它会短暂出现,但很快就会消失。

  • 如果我在带有文本字段的页面上,并将页面拉到一半并放开(不更改页面),self.locationQuery接收焦点很好。

似乎有其他东西正在从现场获取firstResponder 状态,但我一点也不知道是什么,以及为什么它只会在页面更改时发生(而不是在翻页失败后显示)。有任何想法吗?

Update

我创建了一种爬行视图的方法,以查看是否有任何其他视图确实采用了firstResponder(来自此问题的答案:无需使用私有 API 即可获取当前第一响应者 https://stackoverflow.com/questions/1823317/get-the-current-first-responder-without-using-a-private-api)。结果:

  • 当我明确向文本字段提供第一响应者时,该方法报告它具有第一响应者状态。

  • 当我不这样做时,它会返回null.

现在我更困惑了。


我不太明白导致问题的本质,但我能够通过将调用包装在异步调度中来修复它viewDidAppear:

dispatch_async(dispatch_get_main_queue(), ^{
    MapManualViewController *strongSelf = weakSelf;
    [strongSelf.locationQuery becomeFirstResponder];
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UITextField 在视图出现后丢失firstResponder 的相关文章

随机推荐

  • 使用 GeoFire 按半径查询位置

    我知道这是一个基本问题 但我仍然遇到很多麻烦 我有一个 Firebase 数据库存储社区事件 每个事件节点都有一个地理位置节点 使用 GeoFire 创建 称为活动地点 见下面的截图 使用 GeoFire 和 javascript 我将如何
  • 如何在图像上绘画并将该图像保存到 Android 中?

    我是画布新手 我想使用我已保存的图像并希望在该图像上进行一些绘制 之后我想保存它 我知道使用 Canvas 这是可能的 我可以在图像上绘画 但是当我要存储该图像时 它只保存了绘画 不是绘画的图像 那么有人可以告诉我如何在图像上绘画并保存该图
  • android ndk-构建错误

    我正在尝试为 Android 构建 tesseract 我已将 tesseract 放入示例文件夹中 C Android NDK android ndk r8 samples tesseract之内tesseract我有的文件夹tesser
  • CSS 网格并指定多个区域

    我需要一些元素重叠 我还想通过区域名称而不是行 列来指定内容 因为这样可以更好地阅读 我一生都无法理解如何按照 MDN 示例指定多个网格区域 或者 如果它甚至可能 文章建议它根据语法示例是可能的 但它实际上是如何工作的 没有任何线索 问题示
  • 解决多源多汇流网络的最优方式

    为了简单起见 假设我们有以下问题 我们正在为城市中的自动驾驶汽车编写 GPS 我们假设运行我们软件的汽车是路上唯一的汽车 他们将城市的布局表示为一个流网络 但流网络有多个起点 终点 因此存在多个不一定彼此靠近的源 汇 有没有有效的解决方案来
  • 如何覆盖 node.js http 以对所有出站请求使用代理

    我最近创建了一个 node js 应用程序 可以访问社交媒体网站并缓存我们的公共源 我正在使用一些现有的 npm 模块来方便访问社交媒体 api 它在我的开发环境中就像一个魅力 但在我们的生产环境中 请求超时 因为它们需要通过代理 无需修改
  • 构造函数参数的所有组合

    很可能是一个愚蠢的问题 但无论如何 是否有一种简短的方法来声明采用任意参数组合的构造函数 例如 具有 3 个参数的 ctor 有 2 3 种可能的组合 如下面的模型所示 template
  • 将正则表达式中的文本更改为大写

    我有个问题 如何将 HTML 标签 之间的文本更改为大写字母 部分代码 string a b hello world b table test table a Regex Replace a lt n gt String Empty 现在
  • Android项目包结构

    我想知道如何为 Android 应用程序创建灵活的包结构 以便于扩展和管理 我的第一个想法是将每个应用程序组件放在单独的包中 例如 spk myapp main 主要活动中使用的所有类 spk myapp processor 处理器提供程序
  • Objective C - 获取方法的参数类型?

    在运行时我需要能够获取方法的参数类型 以下是打印的内容 我在其他线程上读到 在运行时 Objective C 将传递给方法的所有对象视为参数id 如果这种方法不起作用 那么关于读取参数类型的方法还有其他建议吗 Log 2014 02 07
  • 什么叫会话存储?

    Web 应用程序 网站上下文中的会话存储是什么 它不仅仅是会话变量的临时存储吗 通常 用户对站点的第一个请求会建立一个会话 会话有一个密钥 该密钥作为 cookie 传递给用户 以便每个后续请求都会检索到相同的会话 会话存储可以存储您不希望
  • 在 HTML 和 Javascript 中的图像顶部“绘制”

    我正在构建一个网络应用程序 用户可以通过用光标在图像上 绘图 来标记图像 我们将获取用户的绘图并将其发送到服务器以转换为 PNG 或其他格式进行存储 我们需要这个应用程序能够在基于桌面和平板电脑的浏览器上运行 因此 Flash Java 和
  • 在C中检查大量数据是否为空的最快方法? [复制]

    这个问题在这里已经有答案了 我有大量数据 可能有 4MB 现在想要检查其中的所有位是否都为 0 例如 这是数据 void data malloc 4 1024 1024 memset data 0 4 1024 1024 检查其中的所有位是
  • 是否可以访问App Bundle的en.lproj?

    我希望能够更改语言目录中的语言文件 例如 假设我有日语更新 那么我可以让应用程序从 FTP 站点获取 localized strings 文件 然后写入 jp lproj 目录 另一个例子是将新语言上传到应用程序 我的应用程序将再次从 FT
  • Postgres 的 php pdo:“找不到驱动程序”

    我在新的 Ubuntu 18 04 服务器上为 Postgres 安装了 php 但我遇到了 php 问题 以下是我的 php 7 3 安装步骤 sudo apt install software properties common sud
  • PHP + PhantomJS 光栅化

    我在 PHP 应用程序中使用 PhantomJS 64 位来动态捕获要通过电子邮件发送给用户的 HTML 页面 phantomjs rasterize js http path to images image png 当我在命令行上运行上述
  • 查找 Maven 依赖项对象的依赖项

    我正在编写一个 Maven 3 插件 它需要知道给定的传递依赖项org apache maven model Dependency 我怎样才能做到这一点 在 Maven 3 中 您可以通过依赖于基于树的形式访问所有依赖项maven depe
  • 在 Google App Engine 上使用任务队列时如何确定任务的优先级?

    我正在尝试解决以下问题 我有一系列想要执行的 任务 我有固定数量的工作人员来执行这些工作人员 因为它们使用 urlfetch 调用外部 API 并且对此 API 的并行调用数量有限 我希望这些 任务 能够 尽快 执行 即最小延迟 这些任务是
  • Visual Studio 2022 中是否支持 .editorconfig?

    我打开 Visual Studio 2022 并创建一个新的空解决方案 我添加一个 editorconfig文件包含 root true end of line lf indent style space indent size 3 tab
  • UITextField 在视图出现后丢失firstResponder

    我有一个UIPageViewController 一个页面有一个按钮 另一页有一个UITextField有一个按钮 当页面滚动到带有字段的视图时 我希望它becomeFirstResponder并打开键盘 发生的情况如下 I call se