1

UIAlertViewそのため、alertViewStyleasでa を表示したい状況がありますが、表示さUIAlertViewStylePlainTextInputれたときにそれに関連付けられているキーボードが表示されないようにしたいと考えています。誰にもアイデアがありますか?

PSどのように表示したいかについては、先に進み、シミュレーターにアラートビューを表示してから、alertViewStyle = UIAlertViewStylePlainTextInputリターンを押してください。UIAlertView画面の中央に配置したい。

4

4 に答える 4

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 に答える
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];

2 番目のオプションは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 に答える
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 に答える