gpt4 book ai didi

ios - 在嵌套在 PageViewController 中的 viewController 上设置 becomeFirstResponder

转载 作者:行者123 更新时间:2023-11-28 15:42:47 27 4
gpt4 key购买 nike

我有一个 pageViewController,它有两个 subview Controller ,您可以在它们之间滑动。其中一个有一个 textView,当你滚动到该页面时我想成为第一响应者,然后当你滚动离开时失去焦点。现在我有这个:

override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)

composeTextView.delegate = self
composeTextView.becomeFirstResponder()
}

一旦您开始滚动到 View 上,键盘就会出现。但是一旦滚动完成,键盘就会消失。

知道为什么会这样吗?

最佳答案

过渡风格的 Page Curl 可以正常工作,但不能用于 Scroll。

我认为问题是在 viewDidAppear 之后立即出现,旧页面退出第一响应者并选择一个新的响应者,因此无论您设置为 firstResponder 都将丢失。这是由于新旧 View 在窗口中重复添加和删除而影响了响应者链。我认为在旧 View 滚出屏幕后,出于某种原因它会被添加回窗口,因为当您滚动回到它时,它已经准备就绪。

正如您在此日志中看到的,在 viewDidAppear 之后,两个 View 的窗口都有许多奇怪的变化。新 View 是 0x7fd87fa24160 那么为什么旧 View 0x7fd87fa059a0 被删除并多次添加到窗口?

2020-06-01 10:22:14.093911+0100 Paging2[45575:3540067] DetailViewController 0x7fd87fa15850 viewDidAppear: 0x7fd87fa24160
2020-06-01 10:22:14.094973+0100 Paging2[45575:3540067] MyView 0x7fd87fa059a0 didMoveToWindow 0x0
2020-06-01 10:22:14.095358+0100 Paging2[45575:3540067] MyView 0x7fd87fa24160 didMoveToWindow 0x0
2020-06-01 10:22:14.096090+0100 Paging2[45575:3540067] MyView 0x7fd87fa059a0 didMoveToWindow 0x7fd87f80f3d0
2020-06-01 10:22:14.096511+0100 Paging2[45575:3540067] MyView 0x7fd87fa24160 didMoveToWindow 0x7fd87f80f3d0
2020-06-01 10:22:14.099019+0100 Paging2[45575:3540067] MyView 0x7fd87fa059a0 didMoveToWindow 0x0
2020-06-01 10:22:14.099318+0100 Paging2[45575:3540067] MyView 0x7fd87fa24160 didMoveToWindow 0x0
2020-06-01 10:22:14.099812+0100 Paging2[45575:3540067] MyView 0x7fd87fa059a0 didMoveToWindow 0x7fd87f80f3d0
2020-06-01 10:22:14.100306+0100 Paging2[45575:3540067] MyView 0x7fd87fa24160 didMoveToWindow 0x7fd87f80f3d0

这里比较的是推送时的 UINavigationController。我在这学习了question额外移动到窗口是为了过渡,打开慢速动画有助于:

2020-06-01 10:49:16.786872+0100 NavWindowTest[45792:3560379] View 0x7fbfba608090 didMoveToWindow 0x0 (current view removed from window)
2020-06-01 10:49:16.787170+0100 NavWindowTest[45792:3560379] View 0x7fbfba608090 didMoveToWindow 0x7fbfba50c150 (current view added to window for transition)
2020-06-01 10:49:16.787577+0100 NavWindowTest[45792:3560379] View 0x7fbfba5124d0 didMoveToWindow 0x7fbfba50c150 (new view added)
2020-06-01 10:49:21.801791+0100 NavWindowTest[45792:3560379] View 0x7fbfba608090 didMoveToWindow 0x0 (old view removed from transition)
2020-06-01 10:49:21.803690+0100 NavWindowTest[45792:3560379] ViewController 0x7fbfbd005dd0 viewDidAppear: 0x7fbfba5124d0

viewDidAppear 在导航时最后调用但在分页时首先调用这一事实让我认为存在问题。

关于ios - 在嵌套在 PageViewController 中的 viewController 上设置 becomeFirstResponder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43531127/

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