粘贴操作时出现 UITextView 动画故障 (iOS11)

UITextView stange animation glitch on paste action (iOS11)

我遇到了一个非常棘手的 运行bug。当我在 UITextView 中粘贴任何内容时,我收到了令人惊讶的动画故障。

为了重现它,我刚刚创建了一个黑色 .xcodeproj,通过情节提要和 运行 应用程序将 UITextView 添加到 ViewController

我发现的唯一类似问题是 https://twitter.com/twostraws/status/972914692195790849 它说这是 iOS11 中 UIKit 的错误。但是我的 iPhone 上有很多 UITextview 的应用程序在 iOS11 上可以正常工作。 您可以在此处查看视频中的错误 – https://twitter.com/twostraws/status/972914692195790849

如有任何建议或帮助,我们将不胜感激。 我试过什么? - 以最小的变化尝试了新的清晰项目; - 禁用所有自动更正类型; - 删除了约束; - 尝试了几个不同版本的 iPhones – 11.2.5 和 11.4.2.

附上原工程。它是在 Swift 4.1 上用 Xcode 9.4(9F1027a) 制作的 https://ufile.io/fzyj8

我检查了 iPhone 上的一些其他应用程序,例如 Todoist,并在那里发现了相同的错误。但我也找到了解决方案。 希望苹果能紧急修复这个bug

因此您可以实施 UITextPasteDelegate 并禁用粘贴时的动画操作。此 API 仅在 iOS11+ 可用,但似乎该错误也仅在 iOS11.

上重现
class ViewController: UIViewController {

    @IBOutlet weak var textView: UITextView!

    override func viewDidLoad() {
        super.viewDidLoad()
        textView.pasteDelegate = self
    }
}

extension ViewController: UITextPasteDelegate {
    func textPasteConfigurationSupporting(_ textPasteConfigurationSupporting: UITextPasteConfigurationSupporting, shouldAnimatePasteOf attributedString: NSAttributedString, to textRange: UITextRange) -> Bool {
        return false
    }
}