1

所以我有一种情况,我希望UIAlertViewalertViewStyleas显示 a UIAlertViewStylePlainTextInput,但是我希望拥有它,这样当它出现时,它不会显示与之关联的键盘。有人有想法吗?

PS 对于我希望它的外观,继续并在模拟器中显示警报视图alertViewStyle = UIAlertViewStylePlainTextInput,然后按回车键。我想要UIAlertView在屏幕上居中。

4

4 回答 4

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;
}
于 2013-08-29T18:50:25.403 回答
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

于 2014-07-08T10:24:36.613 回答
0

这只是一个理论,还没有测试过:-

  1. 创建 UIAlertView
  2. 执行类似以下的操作:-

    for(UIView *view in [alertView subViews])
    {
     if([view isKindOfClass:[UITextField class])
    {
     view.delegate=self
    }
    }
    
  3. 实现方法

    - (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
    {
       return NO;
    }
    
  4. 显示警报视图

于 2013-08-29T18:53:08.970 回答
0
for(UIView *view in alert.subviews)
    {
        if([view isKindOfClass:[UITextField class]])
        {
            UITextField *aux=(UITextField *)view;
            aux.text=@"text";
        }
    }

适用于IOS6但不适用于IOS7

于 2014-07-08T10:19:19.273 回答