


文章が表示されるところで、うちはなるべくUILabelで済ませたい派なんだけど、
長押しでコピーしたり、リンクをリンクとして使いたいという要望がでたので、
もともとすべて UILabelで作ってたところを、すべてUITextView に書き換えたわけですよ

ところが!!
結論ゆーと、UITextView の tail にはバグがある!!

NSLineBreakByTruncatingTail を使うときに、まず以下のソースのとき
// ラベル
UILabel *label = [[UILabel alloc] init];
label.textAlignment = NSTextAlignmentLeft;
label.numberOfLines = 2;
label.lineBreakMode = NSLineBreakByTruncatingTail;
label.backgroundColor = [UIColor yellowColor];
label.text = @"改行テスト改行テスト改行テスト改行テスト改行テスト改行テスト改行テスト改行テスト改行テスト改行テスト";
[self.view addSubview:label];
// テキストビュー
UITextView *textView = [[UITextView alloc] init];
textView.backgroundColor = [UIColor yellowColor];
textView.editable = NO;
textView.scrollEnabled = NO;
textView.textContainerInset = UIEdgeInsetsZero;
textView.textAlignment = NSTextAlignmentLeft;
textView.dataDetectorTypes = UIDataDetectorTypeLink;
textView.textContainer.lineFragmentPadding = 0;
textView.textContainer.lineBreakMode = NSLineBreakByTruncatingTail;
textView.textContainer.maximumNumberOfLines = 2;
textView.text = @"改行テスト改行テスト改行テスト改行テスト改行テスト改行テスト改行テスト改行テスト改行テスト改行テスト";
[self.view addSubview:textView];
label.text = @"改行テスト改行テスト改行テスト改行テスト改行テスト改行テスト\n改行テスト改行テスト改行テスト改行テスト";
textView.text = @"改行テスト改行テスト改行テスト改行テスト改行テスト改行テスト\n改行テスト改行テスト改行テスト改行テスト";
改行テストの途中に改行を挿入すると、、
なんとUITextViewだと、...がつかない。
ソースの順番変えたりオプション減らしたりいろいろしたけど、だめだった
結果、UITextViewとUILabelでコピー必須のところだけ出し分けするはめに
こーゆー次のOSでたら解消されてそうなバグの処理かくのめっちゃいやなんだなー
※ちなみに、UILabelでも attributedText を使ったとたんに UITextViewとおなじく、
最後が改行のとき...が表示されません。
これは痛い。。。
これが必要なところにまいちむは、いったんただのtextで...にされるように書いた上に、
背景透明のボタンなりラベルなりをattributeしたい箇所にぴったりのせるという
強行手段をとりました。
そして出し分けたまいちむ
そうしたら今度は、省略時は「...」 じゃなくて、facebookみたいに、
「...続きを読む」にしたいと。
あ、Labelのとこだけね!
一瞬ちょっと大変そうだなと思ったものの、好奇心が勝ってやってみますと言ってしまった
まーぐぐったらあるっしょーと思ったんだけど、意外と見つからず、
結局つくりました
なんでこんなのないのかって簡単だからだれもあげないのかな、、
割りとめんどくさかったのに
というわけで一応のせておこう
文字数オーバーしちゃったので、次の記事で!
エンジニアってほんと知識ってより、ロジック考えるしごつだなー
なのになんで世の中の特に女子たちは、コード書くことにそんな拒否反応をしめすんだろう、、
こんなキャピキャピ書けるのにねっ
キーワード:UITextView UILabel バグ NSLineBreakByTruncatingTail numberOfLines lineBreakMode iOS Xcode facebook ... 続きを読む See More