2012年4月6日金曜日

UITextViewでキャレットの位置を先頭、後尾に移動するパート2

先日作ったキャレット位置を先頭に移動したり、後尾に移動するメソッドがxcodeのAnalyze
でワーニングが出てしまうので作り直しました。


@interface UITextView (extend)
// キャレット位置の設定
typedef enum {
    UICTextViewCaretPositionHead = 0, // 先頭
    UICTextViewCaretPositionTail  // 後尾
}UICTextViewCaretPositionType;
- (void)setCaretPosition:(UICTextViewCaretPositionType)_caretPositionType; 
@end
   
@implementation UITextView (extend)
- (void)setCaretPosition:(UICTextViewCaretPositionType)_caretPositionType
{
 // キャレットを移動する為の選択範囲情報
 NSArray *rangesAtCaretPosition = [NSArray arrayWithObjects:
           [NSValue valueWithRange:(NSRange){0, 0}],      // 先頭
           [NSValue valueWithRange:(NSRange){[self.text length], 0}], // 後尾
          nil
           ];

 // 引数チェック
 if ([rangesAtCaretPosition count] <= _caretPositionType) {
  @throw [NSException exceptionWithName:@"invalid argument error" reason:@"out of range:_caretPositionType" userInfo:nil];
 }

 // キャレットを移動
 NSRange range;
 [[rangesAtCaretPosition objectAtIndex:_caretPositionType] getValue:&range];
 self.selectedRange = range;

}

@end
  
NSValueを使ってNSArrayに保存するように修正しまいた。
このエントリーをはてなブックマークに追加

0 件のコメント :

コメントを投稿