美文网首页iOS开发攻城狮的集散地
UITextRange和NSRange 之间的转换

UITextRange和NSRange 之间的转换

作者: FengxinLi | 来源:发表于2018-07-18 10:07 被阅读397次

    创建一个UITextView或者UITextField的分类方法

    • (NSRange)selectedRange {
      // 文首的位置
      UITextPosition *beginning = self.beginningOfDocument;

      // 内容为[start,end),无论是否有选取区域,start都描述了光标的位置
      UITextRange *selectedRange = self.selectedTextRange;
      UITextPosition *selectionStart = selectedRange.start;
      UITextPosition *selectionEnd = selectedRange.end;

      // 获取以from为基准的to的偏移
      const NSInteger location = [self offsetFromPosition:beginning toPosition:selectionStart];
      const NSInteger length = [self offsetFromPosition:selectionStart toPosition:selectionEnd];

      return NSMakeRange(location, length);
      }

    • (void)setSelectedRange:(NSRange)range // 备注:UITextField必须为第一响应者才有效
      {
      UITextPosition *beginning = self.beginningOfDocument;

      UITextPosition *startPosition = [self positionFromPosition:beginning offset:range.location];
      UITextPosition *endPosition = [self positionFromPosition:beginning offset:range.location + range.length];

      // 创建一个UITextRange
      UITextRange *selectionRange = [self textRangeFromPosition:startPosition toPosition:endPosition];

      [self setSelectedTextRange:selectionRange];
      }

    相关文章

      网友评论

        本文标题:UITextRange和NSRange 之间的转换

        本文链接:https://www.haomeiwen.com/subject/wfznpftx.html