pのメモ

技術系のお話が中心になると思います。おかしなところがありましたら、ご指摘いただければ幸いです。

UITextRange からNSRangeへ変換

メモ。かなり限定的なお話。
UITextInputとかを経由して得られたUITextRangeオブジェクトを、簡単なNSRange型へ変換して扱いたい場合、こんな感じで変換かければいいのかなあ。

-(NSRange)convertRange:(UITextRange*)range inTextInput:(UITextField*)tf
{
    UITextPosition *start = [range start];
    UITextPosition *end = [range end];

    NSInteger startOffset = [tf offsetFromPosition:tf.beginningOfDocument toPosition:start];
    NSInteger endOffset = [tf offsetFromPosition:tf.beginningOfDocument toPosition:end];
    NSRange result = NSMakeRange(startOffset, endOffset - startOffset);
    
    return result;
}