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

时间:2011-06-29 14:57:50

标签: iphone objective-c cocoa-touch uitextfield

我在IB中创建了一个textField。我在IB中将键盘类型设置为Numeric Pad。 当我在secureTextEntry = YES方法中进行-(void)textFieldDidBeginEditing:(UITextField *)textField时,我的键盘会从数字键盘变为通用键盘。我甚至尝试将键盘编程为数字编程,但它仍然没有改变。 我已经设置好了这个

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

FYI, 我无法在IB中将textField设置为安全,因为我在文本字段中向用户显示了类似“4位”的提示文本,直到他开始输入文本字段。一旦他开始在文本字段中输入,我希望条目是一个安全的文本,这样它只显示*而不是他键入的实际字符。

你能告诉我我在做什么错了吗?

我还有两个查询

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

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

1 个答案:

答案 0 :(得分:8)

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

- (void)viewDidLoad {
    ...

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

    ...
}

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