iOS 从键盘扩展移动光标

问题描述 投票:0回答:4

我们可以像这样轻松更新 UITextfield 的光标位置。

[textField setSelectedRange:beginningRange];

是否可以通过键盘扩展更新光标位置?我正在检查 textDocumentProxy 和 inputView。

ios objective-c ios-keyboard-extension
4个回答
0
投票

只需将选择的长度设置为零即可。

一种可能的实现:

+ (void)setCursorInTextField:(UITextField *)textField atIndex:(NSInteger)index {
    UITextPosition *start = [textField positionFromPosition:[textField beginningOfDocument] offset:index];
    UITextPosition *end = [textField positionFromPosition:start offset:0];
    [textField setSelectedTextRange:[textField textRangeFromPosition:start toPosition:end]];
}

0
投票

我知道该怎么做了。

- (void)moveCursorToLeft {
    [self.textDocumentProxy adjustTextPositionByCharacterOffset:-1];
}

- (void)moveCursorToRight {
    [self.textDocumentProxy adjustTextPositionByCharacterOffset:1];
}

0
投票

只需将 uiPanGestureRecignizer 添加到 uiview 或 uibutton 即可左右滑动。

UIPanGestureRecognizer *pan=[[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(handleGesture:)];
    pan.maximumNumberOfTouches = 1;
    [_yourView
     addGestureRecognizer:pan];

然后实现handleGesture函数来获取结果。

-(void)handleGestureNum:(UIPanGestureRecognizer *)gestureRecognizer{
    //Making Direction Indication
float deltaPanX;
        CGPoint velocity = [gestureRecognizer velocityInView:gestureRecognizer.view];
        deltaPanX += 0.1+fabs(velocity.x/500);
        int offset = 0;
        if (deltaPanX >= 1) {
            offset = 1;
            deltaPanX = 0;
        }
        if (velocity.x > 0) {
            NSLog(@"gesture moving right: counter-:@%f",velocity.x);
            [self.textDocumentProxy adjustTextPositionByCharacterOffset:offset];

        }else{
            NSLog(@"gesture moving left: counter-:@%f",velocity.x);
            [self.textDocumentProxy adjustTextPositionByCharacterOffset:-offset];
        }

        if (gestureRecognizer.state == UIGestureRecognizerStateBegan) {

            NSLog(@"UIGestureRecognizerStateBegan");
        }
        else if (gestureRecognizer.state == UIGestureRecognizerStateEnded){


            //        [animView removeFromSuperview];

        }else if (gestureRecognizer.state == UIGestureRecognizerStateFailed){
            // Do something if needed
        }


}

0
投票

嘿,有人找到了在 textdocumentProxy 中的不同文本行内移动光标的方法吗?

© www.soinside.com 2019 - 2024. All rights reserved.