在UIAlertView中更改UITextField的键盘类型

时间:2013-04-02 09:34:14

标签: ios objective-c uialertview

我创建了一个UIAlertView,其alertViewStyle设置为UIAlertViewStylePlainTextInput

我想更改键盘类型,但不是通过添加子视图。

我的代码:

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"a" message:@"b" delegate:nil cancelButtonTitle:@"cancel" otherButtonTitles:@"aaa", nil];
alert.alertViewStyle = UIAlertViewStylePlainTextInput;  
[alert show];

1 个答案:

答案 0 :(得分:41)

如果您想要呈现输入样式,首先要在您的班级中实现UIAlertViewDelegate

其次,当您呈现alertView时,将委托设置为self。

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"a" message:@"b" delegate:self cancelButtonTitle:@"cancel" otherButtonTitles:@"aaa", nil];
alert.alertViewStyle = UIAlertViewStylePlainTextInput;  
[alert show];'

如果您想更改特定字段的键盘类型,请执行此操作

例如对于第一个字段,它将使键盘数字化。

[[alert textFieldAtIndex:0] setKeyboardType:UIKeyboardTypeNumberPad];
[[alert textFieldAtIndex:0] becomeFirstResponder];

iOS 8.0 Swift的更新

从ios 8.0开始UIAlertView已弃用,因此您可能需要使用UIAlertController

 var alert = UIAlertController(title: "Title", message: "Your msg", 
                preferredStyle: UIAlertControllerStyle.Alert)

        alert.addAction(UIAlertAction(title: "Close", style: UIAlertActionStyle.Cancel, 
              handler:yourHandler))

        alert.addTextFieldWithConfigurationHandler({(textField: UITextField!) in
            textField.placeholder = "Password"
            textField.secureTextEntry = true  // setting the secured text for using password
            textField.keyboardType = UIKeyboardType.Default
        })