所以我有一种情况,我希望UIAlertView
显示alertViewStyle
为UIAlertViewStylePlainTextInput
,但是我希望这样做,以便当它显示时,它不会显示与之相关的键盘。有没有人有想法?
P.S。对于我希望它的外观,请继续使用alertViewStyle = UIAlertViewStylePlainTextInput
在模拟器中显示警报视图,然后按回车键。我希望UIAlertView
在屏幕上居中。
答案 0 :(得分:1)
我刚刚发现了几种方法。第一个也是最脏的方法是立即拨打resignFirstResponder
。这很难看,但它确实有效。
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"title" message:@"message" delegate:nil cancelButtonTitle:@"Dismiss" otherButtonTitles:@"Button", nil];
[alert setAlertViewStyle:UIAlertViewStylePlainTextInput];
[alert show];
[[alert textFieldAtIndex:0] resignFirstResponder];
第二种选择是使用UITextFieldDelegate
协议,特别是textFieldShouldBeginEditing:
。使用此功能并将您的类设置为警报中文本字段的代理,您只需返回NO
并阻止键盘显示。
重要的是要记住,除非您在此方法中提供某种条件,否则您将无法编辑文本字段。
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"title" message:@"message" delegate:nil cancelButtonTitle:@"Dismiss" otherButtonTitles:@"Button", nil];
[alert setAlertViewStyle:UIAlertViewStylePlainTextInput];
[[alert textFieldAtIndex:0] setDelegate:self];
[alert show];
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
return NO;
}
答案 1 :(得分:1)
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"title"
message:@"")
delegate:self
cancelButtonTitle:@"Cancel"
otherButtonTitles:@"OK", nil];
alert.alertViewStyle = UIAlertViewStylePlainTextInput;
UITextField *textField = [alert textFieldAtIndex:0];
textField.text = @"your text";
[alert show];
关于IOS6和IOS7的工作
答案 2 :(得分:0)
这只是一个理论而未经过测试: -
执行以下内容: -
for(UIView *view in [alertView subViews])
{
if([view isKindOfClass:[UITextField class])
{
view.delegate=self
}
}
实施方法
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
return NO;
}
show alertview
答案 3 :(得分:0)
for(UIView *view in alert.subviews)
{
if([view isKindOfClass:[UITextField class]])
{
UITextField *aux=(UITextField *)view;
aux.text=@"text";
}
}
适用于IOS6但不适用于IOS7