2016-03-27 6 views
0
  1. I NSTextAlignmentRightなるように設定私のUITextField、それはカーソルですが、通常のように右端にあるスペースを入力した後、左に行きます。
    enter image description hereRightalignment UITextFieldのカーソルが

  2. スペースを入力すると、カーソルはUITextfieldの左端に移​​動します。
    enter image description here

  3. 私はこのようなUITextFieldDelegateメソッドを実装

することにより、この問題を解決しよう:

#pragma mark - UITextFieldDelegate 
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 
{ 
    if (range.location == 0 && [string isEqualToString:@" "]) { 
    return NO; 
    } 
return YES; 
} 

しかし、それは混乱の少しだ、と私は入力スペースはできません最初の文字のために。

これを解決するためのより良い解決策がありますか?
なぜこのバグが起こるのですか?

答えて

2
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { 
    // only when adding on the end of textfield && it's a space 
    if (range.location == textField.text.length && [string isEqualToString:@" "]) { 
     // ignore replacement string and add your own 
     textField.text = [textField.text stringByAppendingString:@"\u00a0"]; 
     return NO; 
    } 
    // for all other cases, proceed with replacement 
    return YES; 
} 

それは、テキストフィールドはっきりしていない場合:shouldChangeCharactersInRange:replacementStringは:あなたの例では、上記の方法は、[:自己テキストフィールドsetDelegate]で指定されたのViewControllerになりますので、UITextFieldDelegateプロトコル方式です。

あなたが戻ってあなたの定期的なスペースが必要な場合は、あなたが明らかにも、@の出現を置き換えることにより、バックテキストを変換するために覚えておく必要があるでしょう@と「\ u00a0」」 "テキストフィールド

外の文字列を取得Ref:Right aligned UITextField spacebar does not advance cursor in iOS 7

関連する問題