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

use*_*414 2 iphone cocoa-touch objective-c uitextfield

我在IB中创建了一个textField.我已将键盘类型设置为Numeric PadIB.当我做secureTextEntry = YES-(void)textFieldDidBeginEditing:(UITextField *)textField方法,我的键盘从数字小到普通的键盘改变.我甚至尝试将键盘编程为数字编程,但它仍然没有改变.我这样设置了它

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

仅供参考,我无法在IB中将textField设置为安全,因为我在文本字段中向用户显示了类似"4位"的提示文本,直到他开始在文本字段中输入为止.一旦他开始在文本字段中输入,我希望条目是一个安全的文本,以便它只显示*而不是他键入的实际字符.

能不能让我知道我在做什么错了?

我还有两个查询

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

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

cod*_*ger 8

您是否尝试在UITextField上使用-setPlaceholder:这样您就不需要在文本字段中放置文本,然后手动将其转换为安全.例如

- (void)viewDidLoad {
    ...

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

    ...
}
Run Code Online (Sandbox Code Playgroud)

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