Iphone 在UTextView中一次移动光标一个字

Iphone 在UTextView中一次移动光标一个字,iphone,ipad,cursor,uitextview,Iphone,Ipad,Cursor,Uitextview,我想创建一个按钮,在UITextView中一次移动一个单词的光标位置。从用户的角度来看,这与Mac OS X中的选项右箭头相同,它被定义为“转到插入点右侧的单词” 我找到了两种方法一次改变角色。您将如何修改此选项以一次移动一个单词 - (IBAction)rightArrowButtonPressed:(id)sender { myTextView.selectedRange = NSMakeRange(myTextView.selectedRange.location + 1, 0)

我想创建一个按钮,在UITextView中一次移动一个单词的光标位置。从用户的角度来看,这与Mac OS X中的选项右箭头相同,它被定义为“转到插入点右侧的单词”

我找到了两种方法一次改变角色。您将如何修改此选项以一次移动一个单词

- (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);
    }

}

谢谢分享。它非常接近我所寻找的,并且让我走上了正确的道路。非常感谢。nextWord将光标放在下一个单词前面(顾名思义)。我试图将光标移动到当前单词之后(如OSX选项右箭头)。摆弄搜索类型和范围选项,但我没有成功。上一个单词按预期工作。为了进一步澄清,如果Mac OS X发现你已经在一个单词的末尾,它将跳转到下一个单词的末尾。Doh!我尝试将+1添加到currentLocation,但没有从textLength中减去它。非常感谢你的帮助。