2015-12-02 11 views
5

私は最近、エラーを取得してきていながら: 要求caretRectForPosition:NSTextStorageは、未処理の変更

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

*「Oustandingは」それは言う文字通りあり、そして私のタイプミスではありません。私は enumerateAttribute()方法で NSTextViewのサブクラスの NSTextStorageを反復し、テキストビュー内のすべての変更後にテキストビューで NSTextAttachment Sを操作していたときに

これが呼び出されています。このようthisとして

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で物理キーボードを使用している場合にのみ発生します。

+0

9.2で物理キーボードの有無にかかわらず私に起こります。 –

+0

@SamSoffesどのようなキャレット関連のメソッドもオーバーライドしますか? –

+0

私はいくつかの複雑なものをやっています。それを理解するために単純化しようと時間を費やしていない。 –

答えて

5

これは、caretRectForPosition(またはfirstRectForRangeのようなものを呼び出すメソッド)を呼び出して、テキストストレージに編集がある場合に発生します。

endEditingがNSTextStorageで呼び出され、メインキューにdispatch_asyncが呼び出されて作業が完了するまで、これらのログを無効にすることができました。表示されるUIフラッシュや、非同期の結果としての何もありません。

これを解決するにはより良い方法が必要ですが、これは私が理解できるすべてです。

+0

この問題の最新情報はありますか?私は同じぎこちないタイプミスのエラーメッセージを受け取っています –

-2

神様、私はちょうど今問題を解決しています。あなたは他の方法であなたのカストムストレージを所有しなければなりません。ちょうど私を信じて試してみてください

+0

あなたはこの "修正"についてもう説明しますか? – siburb

+2

ようこそstackoverflowへ!下のコメントボックスを使用してください。十分な評判があれば、投稿にコメントすることができます。 :) –

関連する問題