所以我有一种情况,我希望UIAlertView
用alertViewStyle
as显示 a UIAlertViewStylePlainTextInput
,但是我希望拥有它,这样当它出现时,它不会显示与之关联的键盘。有人有想法吗?
PS 对于我希望它的外观,继续并在模拟器中显示警报视图alertViewStyle = UIAlertViewStylePlainTextInput
,然后按回车键。我想要UIAlertView
在屏幕上居中。
所以我有一种情况,我希望UIAlertView
用alertViewStyle
as显示 a UIAlertViewStylePlainTextInput
,但是我希望拥有它,这样当它出现时,它不会显示与之关联的键盘。有人有想法吗?
PS 对于我希望它的外观,继续并在模拟器中显示警报视图alertViewStyle = UIAlertViewStylePlainTextInput
,然后按回车键。我想要UIAlertView
在屏幕上居中。
我刚刚找到了几种方法来做到这一点。第一种也是最肮脏的方法是立即调用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;
}
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
这只是一个理论,还没有测试过:-
执行类似以下的操作:-
for(UIView *view in [alertView subViews])
{
if([view isKindOfClass:[UITextField class])
{
view.delegate=self
}
}
实现方法
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
return NO;
}
显示警报视图
for(UIView *view in alert.subviews)
{
if([view isKindOfClass:[UITextField class]])
{
UITextField *aux=(UITextField *)view;
aux.text=@"text";
}
}
适用于IOS6但不适用于IOS7