在IOS 6和iOS 5退格键的功能为UITextField与“安全”属性(Backspace fu

2019-08-07 08:01发布

我有一个UITextfield与输入密码SECURE属性启用。

当用户点击外UITextfield输入一定数目的字符后,然后再轻敲回UITextfield进行编辑,以下行为正在发生:

的iOS 5.1 -当我尝试删除字符(使用backspace从键盘从) UITextfield ,最后一个字符将被删除。

的iOS 6.0 -当我试图删除从一个字符UITextfield ,所有键入的字符越来越删除。

我是不是做错了什么,或者这是在iOS 6中的错误吗?

Answer 1:

这是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


Answer 2:

还有与iOS 6的W /关于这一新行为的问题。 试试这个:

  1. 导航到一个视图的两个UITextFields,其中一个是安全
  2. 键入任何进入非安全文本字段。
  3. 点击进入安全文本字段,不要键入或删除任何东西。 点击返回到非安全领域
  4. 打一次退格键

中提琴! 你现在有没有在你的文本字段。 我能够重现这种始终如一的iOS对6.0.x和6.1



Answer 3:

看起来这可以通过显式设置secureTextEntry在viewDidLoad中或左右,以不固定。

- (void)viewDidLoad {
    [super viewDidLoad];

    self.textField.secureTextEntry = NO;
}

这似乎与上述(与电子邮件字段并在其上一个安全的密码字段的图)描述的,iOS 6的下的情况下工作。

HTH!



Answer 4:

这是一个方式,如果安全领域将是由退格被清除,以检测:

iOS 6中的UITextField安全-如何检测退格清除所有字符?



文章来源: Backspace functionality in iOS 6 & iOS 5 for UITextfield with 'secure' attribute