gpt4 book ai didi

objective-c - UITextField 在 View 出现后丢失 firstResponder

转载 作者:太空狗 更新时间:2023-10-30 03:29:23 25 4
gpt4 key购买 nike

我有一个 UIPageViewController。一个页面有一个按钮,另一个页面有一个带按钮的 UITextField。当页面滚动到带有该字段的 View 时,我希望它 becomeFirstResponder 并打开键盘。这是发生了什么:

  • 我调用 [self.locationQuery becomeFirstResponder] ViewController 的 viewDidAppear 方法。但它永远不会打开键盘。

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

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

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

更新

我创建了一种方法来抓取 View ,以查看是否有任何其他 View 确实采用了 firstResponder(来自对这个问题的回答:Get the current first responder without using a private API)。结果:

  • 当我明确将第一响应者指定给文本字段时,该方法报告它具有第一响应者状态。

  • 如果我不这样做,它会返回 null

现在我更糊涂了。

最佳答案

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

dispatch_async(dispatch_get_main_queue(), ^{
MapManualViewController *strongSelf = weakSelf;
[strongSelf.locationQuery becomeFirstResponder];
});

关于objective-c - UITextField 在 View 出现后丢失 firstResponder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21032056/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com