我们可以像这样轻松更新 UITextfield 的光标位置。
[textField setSelectedRange:beginningRange];
是否可以通过键盘扩展更新光标位置?我正在检查 textDocumentProxy 和 inputView。
只需将选择的长度设置为零即可。
一种可能的实现:
+ (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]];
}
我知道该怎么做了。
- (void)moveCursorToLeft {
[self.textDocumentProxy adjustTextPositionByCharacterOffset:-1];
}
- (void)moveCursorToRight {
[self.textDocumentProxy adjustTextPositionByCharacterOffset:1];
}
只需将 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
}
}
嘿,有人找到了在 textdocumentProxy 中的不同文本行内移动光标的方法吗?