TTTAttributedLabel を使用してテキストに書式を適用していますが、絵文字を含む範囲に書式を適用しようとしているため、クラッシュするようです。例:
NSString *text = @"@user1234 #hashtag"; // text.length reported as 22 by NSLog as each emoji is 2 chars in length
cell.textLabel.text = text;
int length = 8;
int start = 13;
NSRange *range = NSMakeRange(start, length);
if (!NSEqualRanges(range, NSMakeRange(NSNotFound, 0))) {
// apply formatting to TTTAttributedLabel
[cell.textLabel addLinkToURL:[NSURL URLWithString:[NSString stringWithFormat:@"someaction://hashtag/%@", [cell.textLabel.text substringWithRange:range]]] withRange:range];
}
注: API から NSRange 値とテキスト文字列が渡されます。
上記では、#hashtag にフォーマットを適用しようとしています。通常はこれで問題なく動作しますが、文字列に絵文字が含まれているため、識別された範囲が絵文字をフォーマットしようとしていると考えられます。これらは実際には UTF 値であり、TTTAttributedLabel でクラッシュを引き起こします (実際にはクラッシュせずにハングしますが、. ..)
不思議なことに、絵文字が 1 つあれば問題なく動作しますが、2 つあると壊れます。
ここで何をすべきかを理解するのを手伝ってくれる人はいますか?