UITextField SecureTextEntry字段将键盘从数字键盘更改为通用键盘

问题描述:

我在IB中创建了一个textField。我已经在IB中将键盘类型设置为Numeric Pad。 当我通过-(void)textFieldDidBeginEditing:(UITextField *)textField方法制作secureTextEntry = YES时,我的键盘从数字键盘变为通用键盘。我甚至试图让键盘以编程方式进行数字化,但仍然没有改变。 我已将它像这样UITextField SecureTextEntry字段将键盘从数字键盘更改为通用键盘

-(void)textFieldDidBeginEditing:(UITextField *)textField{ 
    if(textField == self.activationCodeTextField){ 
     self.activationCodeTextField.secureTextEntry = YES; 
     self.activationCodeTextField.keyboardType = UIKeyboardTypeNumberPad; 
    } 
} 

仅供参考, 我不能设置文本框是安全的IB,因为我有一个提示文本喜欢在文本字段显示给用户“4位”,直到他开始打字在文本提交。一旦他开始在文本框中输入内容,我希望条目是一个安全的文本,以便它只显示*而不是他键入的实际字符。

你能让我知道我在做什么错吗?

我也有两个查询

  1. 我有一个文本框,其中我有一些默认的文本(如提示文本)。我希望这个提示文本显示给用户,直到他开始输入。当用户点击文本框然后默认文本清除时,我不想清除此文本。但是,我希望显示该文本,直到他真正开始在键盘上键入内容为止,然后必须清除默认值,然后在文本字段中显示实际输入的文本。这有可能实现吗?

  2. 是否可以通过编程方式将文本字段的光标位置设置为第一个字符。这是必要的,因为我有一些默认文本(提示文本),并且光标位于文本的末尾。我希望光标位于文本的开头。如何以编程方式使这成为可能?

您是否尝试过在您的UITextField上使用-setPlaceholder:?这样您就不需要在文本字段中输入文本,然后再手动将其转换为安全文件。例如

- (void)viewDidLoad { 
    ... 

    [textField setSecureTextEntry:YES]; 
    [textField setPlaceholder:@"4-digits"]; 

    ... 
} 

这将完全照顾你的最后两个问题。不过,关于第一个问题,我不确定是否可以为安全的UITextField使用数字键盘。如果以编程方式设置它没有效果,看起来你不能。

+0

这一个确实解决了你提到的最后两个问题。但我仍然坚持第一个问题。有任何想法吗? – user946414

+0

对不起,我忽略了这些问题。实际上,设置占位符并在稍后使安全textentry为true,已解决了所有问题。谢谢。 – user946414

+0

当然可以!很高兴帮助。 :) – codykrieger