当前位置:  开发笔记 > IOS > 正文

请求caretRectForPosition:NSTextStorage有很多变化

如何解决《请求caretRectForPosition:NSTextStorage有很多变化》经验,为你挑选了1个好方法。

我最近收到了错误:

requesting caretRectForPosition: while the NSTextStorage has oustanding changes {x, x}

*"Oustanding"实际上就是它所说的,而不是我的错字.

当我使用方法迭代NSTextStorage子类并在文本视图中的每次更改后操作文本视图中的s时,都会调用NSTextViewenumerateAttribute()方法NSTextAttachment.

func manipulateText() {
    let text = customTextView.textStorage
    text.enumerateAttribute(NSAttachmentAttributeName, inRange: NSMakeRange(0, text.length), options: NSAttributedStringEnumerationOptions(rawValue: 0)) {
    //
    }
}

extension ThisViewController: UITextViewDelegate {
    func textViewDidChange(textView: UITextView) {
        manipulateText()
    }
}

像这样的问题似乎是在线的,但我还没有发现任何这种情况,似乎只与iOS 9相关.

只有在iPad上使用物理键盘时才会发生这种情况.



1> Sam Soffes..:

如果在文本存储编辑时调用caretRectForPosition(或任何调用它的方法),则会发生这种情况firstRectForRange.

我能够通过延迟一些东西来阻止这些日志,直到在endEditingNSTextStorage和dispatch_async主队列中调用之后才能完成我的工作.由于异步,没有任何可见的UI闪烁或任何内容.

必须有一个更好的方法来解决这个问题,但这是我能想到的.

推荐阅读
TXCWB_523
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有