gpt4 book ai didi

ios - 当 UIScrollView 滚动第一响应者查看时,如何修复 iOS 14 中的错误行为?

转载 作者:行者123 更新时间:2023-12-04 08:37:28 25 4
gpt4 key购买 nike

当我从一个文本字段点击到另一个文本字段时,它会滚动以便聚焦前一个 TextView 。我试图通过观察键盘更改通知来对此做出回应,并注意到 UIResponder.keyboardWillChangeFrameNotification被调用两次。一次是第一个 TextView 仍然是第一响应者,一次是第二个 TextView 是第一响应者。
Scroll Problems
如果有人想对此进行尝试,我创建了最少的代码来重现我所看到的问题。启动一个新的单页应用程序并将其粘贴到 ViewController.swift 中。

import UIKit

class ViewController: UIViewController {

override func loadView() {
view = ScrollView()
}
}

class ScrollView: UIScrollView {

lazy var stack: UIStackView = {
let stack = UIStackView()
stack.backgroundColor = .systemGroupedBackground
stack.axis = .vertical
stack.spacing = 32
for number in 1...50 {
let textField = UITextField()
textField.text = "\(number)"
textField.borderStyle = .roundedRect
textField.heightAnchor.constraint(equalToConstant: 44).isActive = true
stack.addArrangedSubview(textField)
}
return stack
}()

init() {
super.init(frame: .zero)
addSubview(stack)
stack.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
stack.topAnchor.constraint(equalTo: topAnchor),
stack.bottomAnchor.constraint(equalTo: bottomAnchor),
stack.leadingAnchor.constraint(equalTo: leadingAnchor),
stack.trailingAnchor.constraint(equalTo: trailingAnchor),
stack.widthAnchor.constraint(equalTo: widthAnchor)
])
}

required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}

最佳答案

我不明白为什么 iOS 14 会这样,以及它是有意为之还是一个错误。我能够解决它的方法是子类化 UIScrollView并覆盖 setContentOffset什么都不做。这是我正在谈论的一个例子。

class ScrollView: UIScrollView {

func forceContentOffset(_ contentOffset: CGPoint, animated: Bool) {
super.setContentOffset(contentOffset, animated: animated)
}

override func setContentOffset(_ contentOffset: CGPoint, animated: Bool) {
// Intentially left blank to block the system from changing the content offset
}
}
这允许您手动确定何时滚动 ScrollView ,但它需要植入您想要自己保留的任何自动行为。

关于ios - 当 UIScrollView 滚动第一响应者查看时,如何修复 iOS 14 中的错误行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64733440/

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