2016-11-06 3 views
0

このように、UITextfieldのカーソル位置を簡単に更新できます。キーボード拡張からiOSを移動する

[textField setSelectedRange:beginningRange]; 

それはキーボード延長からカーソル位置を更新することはできますか?私はtextDocumentProxyとinputViewをチェックしています。

答えて

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

単に右から左にスワイプします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 
     } 


} 
関連する問題