我想创建一个按钮,一次移动一个单词在 UITextView 中的光标位置。从用户的角度来看,这与 Mac OS X 中的 Option-右箭头相同,定义为“转到插入点右侧的单词。”
我找到了几种同时提升角色的方法。您将如何修改它以一次移动一个单词?
- (IBAction)rightArrowButtonPressed:(id)sender
{
myTextView.selectedRange = NSMakeRange(myTextView.selectedRange.location + 1, 0);
}
感谢您的任何建议。
最佳答案
能够像这样实现它,
- (IBAction)nextWord {
NSRange selectedRange = self.textView.selectedRange;
NSInteger currentLocation = selectedRange.location + selectedRange.length;
NSInteger textLength = [self.textView.text length];
if ( currentLocation == textLength ) {
return;
}
NSRange newRange = [self.textView.text rangeOfCharacterFromSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]
options:NSCaseInsensitiveSearch
range:NSMakeRange((currentLocation + 1), (textLength - 1 - currentLocation))];
if ( newRange.location != NSNotFound ) {
self.textView.selectedRange = NSMakeRange(newRange.location, 0);
} else {
self.textView.selectedRange = NSMakeRange(textLength, 0);
}
}
- (IBAction)previousWord {
NSRange selectedRange = self.textView.selectedRange;
NSInteger currentLocation = selectedRange.location;
if ( currentLocation == 0 ) {
return;
}
NSRange newRange = [self.textView.text rangeOfCharacterFromSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]
options:NSBackwardsSearch
range:NSMakeRange(0, (currentLocation - 1))];
if ( newRange.location != NSNotFound ) {
self.textView.selectedRange = NSMakeRange((newRange.location + 1), 0);
} else {
self.textView.selectedRange = NSMakeRange(0, 0);
}
}
关于iphone - 在 UTextView 中一次移动一个单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6273323/