このように、UITextfieldのカーソル位置を簡単に更新できます。キーボード拡張からiOSを移動する
[textField setSelectedRange:beginningRange];
それはキーボード延長からカーソル位置を更新することはできますか?私はtextDocumentProxyとinputViewをチェックしています。
このように、UITextfieldのカーソル位置を簡単に更新できます。キーボード拡張からiOSを移動する
[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];
}
単に右から左にスワイプしますUIViewのかuibuttonにuiPanGestureRecignizerを追加します。
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
}
}