2

属性を有効UITextfieldにしてパスワードを入力するためのものがあります。SECURE

ユーザーが一定数の文字を入力した後に の外側をタップし、編集UITextfieldのために に再度タップすると、次の動作が発生します。UITextfield

iOS 5.1 - から文字を (backspaceキーボードから)削除しようとするUITextfieldと、最後の文字が削除されます。

iOS 6.0 - から文字を削除しようとすると、UITextfield入力したすべての文字が削除されます。

何か間違ったことをしているのですか、それとも iOS 6 のバグですか?

4

4 に答える 4

6

これはiOS6で意図された動作であり、おそらく変更しないでください。

何らかの理由でこれが本当に必要な場合は、UITextFieldのデリゲートメソッドをオーバーライドtextField:shouldChangeCharactersInRange:replacementString:して、古い動作を復元できます。

#import "ViewController.h"

@interface ViewController () <UITextFieldDelegate>
@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.passwordField.delegate = self;
}

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    if (range.location > 0 && range.length == 1 && string.length == 0)
    {
        // iOS is trying to delete the entire string
        textField.text = [textField.text substringToIndex:textField.text.length - 1];
        return NO;
    }
    return YES;
}

@end
于 2013-01-19T11:04:05.517 に答える
5

この新しい動作に関して、iOS 6 にも問題があります。これを試して:

  1. 2 つの UITextFields を持つビューに移動します。一方は安全です
  2. 非セキュア テキスト フィールドに何かを入力します。
  3. セキュリティで保護されたテキスト フィールドをタップします。何も入力したり、削除したりしないでください。非セキュアなフィールドに再びアクセスする
  4. バックスペースを1回押します

ビオラ!テキストフィールドには何もありません。これは、iOS 6.0.x および 6.1 で一貫して再現できます。

于 2013-02-05T18:42:51.510 に答える