如何将UITextRange
对象转换为NSRange
?我已经看到了很多关于转向另一个方向的帖子,但这与我需要的相反。我使用的是UITextRange
selectedTextRange
,它是UITextView
的一个属性。它返回一个UITextRange
,但我需要一个范围。
发布于 2014-01-16 06:52:22
你需要这样的东西:
- (NSRange) selectedRangeInTextView:(UITextView*)textView
{
UITextPosition* beginning = textView.beginningOfDocument;
UITextRange* selectedRange = textView.selectedTextRange;
UITextPosition* selectionStart = selectedRange.start;
UITextPosition* selectionEnd = selectedRange.end;
const NSInteger location = [textView offsetFromPosition:beginning toPosition:selectionStart];
const NSInteger length = [textView offsetFromPosition:selectionStart toPosition:selectionEnd];
return NSMakeRange(location, length);
}
发布于 2016-08-06 22:02:04
这是一个基于Vitaly S的答案的Swift扩展。
extension UITextInput {
var selectedRange: NSRange? {
guard let range = self.selectedTextRange else { return nil }
let location = offsetFromPosition(beginningOfDocument, toPosition: range.start)
let length = offsetFromPosition(range.start, toPosition: range.end)
return NSRange(location: location, length: length)
}
}
Swift 4
extension UITextInput {
var selectedRange: NSRange? {
guard let range = selectedTextRange else { return nil }
let location = offset(from: beginningOfDocument, to: range.start)
let length = offset(from: range.start, to: range.end)
return NSRange(location: location, length: length)
}
}
发布于 2014-06-17 20:07:18
UITextView
有一个属性
@property(nonatomic) NSRange selectedRange;
https://stackoverflow.com/questions/21149767
复制相似问题