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

kat*_*000 3 objective-c uitextview uikit ios swift

我面临一个非常奇怪的错误。当我在其中粘贴任何内容时UITextView,我会收到令人惊讶的动画故障。

要重现它,我刚刚创建了black .xcodeproj,通过Storyboard 添加UITextView到其中ViewController并运行了该应用程序。

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

任何建议或帮助,将不胜感激。我尝试了什么?-尝试以最小的更改进行新的清晰项目;-禁用所有自动更正类型;-消除了限制;-在具有不同版本(11.2.5和11.4.2)的多个iPhone上试用。

原始项目已附加。它是由上Swift 4.1Xcode 9.4(9F1027a) https://ufile.io/fzyj8

kat*_*000 6

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

因此,您可以实施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
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 非常感谢您找到这个。这个问题使我疯狂了一段时间。在我的测试中(在意识到存在UITextPasteDelegate选项之前),与标准UITextView相比,与UITextView的更复杂用例(支持调整键盘外观的大小,响应文本事件等)相比,该动画看起来更好。我仍然想知道动画不正确的根本原因是某个地方缺少超级调用,这会导致iOS为动画拍摄快照时出现问题。 (3认同)
  • @solesignal我也想知道。我将继续监视新的iOS版本。修复错误后,希望不要忘记在这里写回。 (2认同)