粘贴操作时出现 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
}
}
我遇到了一个非常棘手的 运行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
}
}