首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >UITextPosition到NSRange

UITextPosition到NSRange
EN

Stack Overflow用户
提问于 2012-07-31 10:05:33
回答 4查看 9.8K关注 0票数 18

我需要使用NSStringFromRange,但我只有一个开始和结束UITextPositions。如何将UITextPosition转换为NSRange。

代码语言:javascript
运行
复制
NSMutableArray * wordArray = [[NSMutableArray alloc]init];
id<UITextInputTokenizer> tokenizer = tv.tokenizer;
UITextPosition *start = tv.beginningOfDocument;
while (![start isEqual:tv.endOfDocument]) {
    UITextPosition *end = [tokenizer positionFromPosition:start toBoundary:UITextGranularityWord inDirection:UITextStorageDirectionForward];
    NSString *word = [tv textInRange:[tv textRangeFromPosition:start toPosition:end]];
    [wordArray addObject:NSStringFromRange(<#NSRange range#>)];
    start = end;
}
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-07-31 11:40:54

试试这个:

代码语言:javascript
运行
复制
NSInteger startOffset = [tv offsetFromPosition:tv.beginningOfDocument toPosition:start];
NSInteger endOffset = [tv offsetFromPosition:tv.beginningOfDocument toPosition:end];
NSRange offsetRange = NSMakeRange(startOffset, endOffset - startOffset);
[wordArray addObject:NSStringFromRange(offsetRange)];
票数 24
EN

Stack Overflow用户

发布于 2014-01-26 04:40:56

代码语言:javascript
运行
复制
- (NSRange)rangeFromTextRange:(UITextRange *)textRange inTextView:(UITextView*)textView {

    UITextPosition* beginning = textView.beginningOfDocument;
    UITextPosition* start = textRange.start;
    UITextPosition* end = textRange.end;

    const NSInteger location = [textView offsetFromPosition:beginning toPosition:start];
    const NSInteger length = [textView offsetFromPosition:start toPosition:end];

    return NSMakeRange(location, length);
}
票数 8
EN

Stack Overflow用户

发布于 2017-09-04 00:28:24

Swift3版本

代码语言:javascript
运行
复制
    func angeFromTextRange(textRange:UITextRange,textView:UITextView) -> NSRange {
       let location:Int = textView.offset(from: textView.beginningOfDocument, to: textRange.start)
       let length:Int = textView.offset(from: textRange.start, to: textRange.end)
       return NSMakeRange(location, length)
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11732150

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档