【发布时间】:2016-11-06 09:29:00
【问题描述】:
我们可以像这样轻松地更新 UITextfield 的光标位置。
[textField setSelectedRange:beginningRange];
是否可以从键盘扩展更新光标位置?我正在检查 textDocumentProxy 和 inputView。
【问题讨论】:
标签: ios objective-c ios-keyboard-extension
我们可以像这样轻松地更新 UITextfield 的光标位置。
[textField setSelectedRange:beginningRange];
是否可以从键盘扩展更新光标位置?我正在检查 textDocumentProxy 和 inputView。
【问题讨论】:
标签: ios objective-c ios-keyboard-extension
只需将选择的长度设置为零。
一种可能的实现方式:
+ (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
}
}
【讨论】: