2017-09-21 9 views
1

UITextViewの最初の文字はattributedTextの属性を、後続のテキストの既定の属性として使用しているようです。私はtypingAttributesを使用しようとしましたが、これは入力時にのみ機能します(貼り付けるとスペースバーをダブルタップすることはすぐに説明します)。UITextViewの既定の属性

テキストの最初の行として題名を作成してから貼り付けた場合、貼り付けられたテキストはその題名の属性になります。

ただし、テキスト(デフォルト属性)とそれに続く言葉を追加した後、貼り付けたテキストにはデフォルト属性があります。

私はあなたの言葉の後に入力しているが、スペースバーを貼り付けるかダブルタップして、最初の文字が何であっても属性を取る場合はいつでも入力するtypingAttributesをリセットしようとしました。

これを処理する方法はありますか?おそらくNSAttributedString関数をオーバーライドするか、UITextView上の/ varというメソッドが私の手助けをしていないのですか?

最初の編集:

長い

func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, 
         replacementText text: String) -> Bool 

の内側に1つの文字は私がfalseを返すと、テキストを自分で交換することができますよりも、だテキストをキャプチャします。

は、私はしかし、誰が正しく、それは非常に参考になる本をキャプチャする方法を知っている場合は .

に二つの空間からの変更をキャプチャしようとして立ち往生しています。

答えて

1

私は1つの文字の上

func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, 
         replacementText text: String) -> Bool 

と撮影したテキストを使用し、適切な属性でそれを自分自身を挿入し、falseを返す貼り付けテキストに私の問題を解決するために、私の編集に言ったように。

(少なくとも現時点では)私の解決策は、

public func textViewDidChange(_ textView: UITextView) 

をチェックして(バックselectedRange場所と2つの文字に基づく)を参照してください今、私たちかどうかをすることで、スペースバーをダブルタップについて期間とスペースがある。もし私がそうしたら、その場所にデフォルトのテキスト属性を置く。これは、期間とスペースをデフォルトに設定しないでください。私のために問題ではないように見える瞬間のために、もし私がここに私の作品を掲載するならば。

+0

興味深いことに、私は完全に貼り付け+期間問題のダブルタップについて考えなかった!フォローアップをありがとう。適切なフォローアップでSOの回答を見ることはまれです。私はまだこの動作がiOS 11で変わったのかどうか不思議です。 – ajfigueroa

+0

これはiOS 11に固有のものではなく、むしろレーダーの下にある問題だと私は信じています。 – Steve

関連する問題