对于带输入框的弹出框(UIAlertView),在IOS5.0及以上版本,有一种较为简单的实现方式,即设置UIAlertView的alertViewStyle属性即可。
可供设置的属性如下:
typedef NS_ENUM(NSInteger, UIAlertViewStyle) {
UIAlertViewStyleDefault = 0,
UIAlertViewStyleSecureTextInput,
UIAlertViewStylePlainTextInput,
UIAlertViewStyleLoginAndPasswordInput
};
UIAlertViewStyleDefault,为默认值,不带输入框
UIAlertViewStyleSecureTextInput为密码型输入框,输入的字符显示为圆点儿
UIAlertViewStylePlainTextInput为明文输入框,显示输入的实际字符
UIAlertViewStyleLoginAndPasswordInput为用户名,密码两个输入框,一个明文,一个密码。
取得输入框指针的方法如下:
对于UIAlertViewStyleSecureTextInput和UIAlertViewStylePlainTextInput两种情况,
UITextField *tf = [alert textFieldAtIndex:0]即可取到输入框指针,然后可以进行具体的操作,包括设置键盘样式
对于UIAlertViewStyleLoginAndPasswordInput,除了上面的输入框,依次类推,还可以取到第二个输入框,即:
UITextField *tf2 = [alert textFieldAtIndex:1]
设置键盘样式的方法,即设置UITextField的keyboardType属性。具体值如下:
typedef NS_ENUM(NSInteger, UIKeyboardType) {
UIKeyboardTypeDefault, // Default type for the current input method.
UIKeyboardTypeASCIICapable, // Displays a keyboard which can enter ASCII characters, non-ASCII keyboards remain active
UIKeyboardTypeNumbersAndPunctuation, // Numbers and assorted punctuation.
UIKeyboardTypeURL, // A type optimized for URL entry (shows . / .com prominently).
UIKeyboardTypeNumberPad, // A number pad (0-9). Suitable for PIN entry.
UIKeyboardTypePhonePad, // A phone pad (1-9, *, 0, #, with letters under the numbers).
UIKeyboardTypeNamePhonePad, // A type optimized for entering a person's name or phone number.
UIKeyboardTypeEmailAddress, // A type optimized for multiple email address entry (shows space @ . prominently).
#if __IPHONE_4_1 <= __IPHONE_OS_VERSION_MAX_ALLOWED
UIKeyboardTypeDecimalPad, // A number pad with a decimal point.
#endif
#if __IPHONE_5_0 <= __IPHONE_OS_VERSION_MAX_ALLOWED
UIKeyboardTypeTwitter, // A type optimized for twitter text entry (easy access to @ #)
#endif
UIKeyboardTypeAlphabet = UIKeyboardTypeASCIICapable, // Deprecated
};
示例代码:
- (IBAction)pressed:(id)sender
{
UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"message"
message:@"please input"
delegate:nil
cancelButtonTitle:@"cancel"
otherButtonTitles:@"OK", nil];
// 基本输入框,显示实际输入的内容
alert.alertViewStyle = UIAlertViewStylePlainTextInput;
// 用户名,密码登录框
// alert.alertViewStyle = UIAlertViewStyleLoginAndPasswordInput;
// 密码形式的输入框,输入字符会显示为圆点
// alert.alertViewStyle = UIAlertViewStyleSecureTextInput;
//设置输入框的键盘类型
UITextField *tf = [alert textFieldAtIndex:0];
tf.keyboardType = UIKeyboardTypeNumberPad;
UITextField *tf2 = nil;
if (alert.alertViewStyle == UIAlertViewStyleLoginAndPasswordInput) {
// 对于用户名密码类型的弹出框,还可以取另一个输入框
tf2 = [alert textFieldAtIndex:1];
tf2.keyboardType = UIKeyboardTypeASCIICapable;
}
// 取得输入的值
NSString* text = tf.text;
NSLog(@"INPUT:%@", text);
if (alert.alertViewStyle == UIAlertViewStyleLoginAndPasswordInput) {
// 对于两个输入框的
NSString* text2 = tf2.text;
NSLog(@"INPUT2:%@", text2);
}
[alert show];
}