UITextViewを使っている時にハマった


textViewを編集できないように設定
textView.editable = NO;

textViewにURLをタップできるようUIDataDetectorTypeLinkを設定
textView.dataDetectorTypes = UIDataDetectorTypeLink;


プロパティを設定した場合、表示するテキストにURLが含まれる場合、
リンクとして表示してくれる。

しかし、そのままtextViewのテキストを書き換えた時に、
URLが含まれていないのにも関わらずリンクになってしまう現象があった。


textViewを使いまわしている場合に

textView.text = @"http://~"; // リンクとして表示される

その後

textView.text = @"文字列"; // なぜかリンクとして表示される


対処法としては、
・URLの後ろに文字列を追加する。
・textを設定した後にfontを再設定する。


文字列を追加するのは、
@"http://~ ←シャモンのHP"
とかするとURLのみリンク表示され、バグが起こらない。


もしくは、textを設定した後にfontを再設定する。
textView.text = @"http://~"; // リンクとして表示される
その後
textView.text = @"文字列"; // なぜかリンクとして表示される
textView.font = [UIFont fontWithName:@"DBLCDTempBlack" size:15.0f]; // なぜか戻る

textView.font = textView.font: // コレでも


fontにリンク設定があるらしく、
上書きしてやることで訂正される。

ソースの見栄えは悪くなるし、知らない人が見ると
何やってんだこれ?ってことになるけど仕方ない。

インスタンス再設定する方が面倒だしw

同じバグで困ってる人は
テキストを設定した後に、
フォントを再設定してやるといいかも。

わかりにくかったら申し訳ない