Не совсем понятно, что вы пытаетесь сделать, но есть несколько возможностей.Если вам просто нужны обычные кнопки, вы можете прикрепить их столько, сколько захотите, с помощью параметра otherButtons.
UIAlertView* anAlert = [[UIAlertView alloc] initWithTitle:@"My Alert" message:@"This is My Alert" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Other", @"Other2", nil];
Вы также можете использовать addButtonWithTitle, чтобы добавить столько, сколько хотите.
UIAlertView* anAlert = [[UIAlertView alloc] initWithTitle:@"My Alert" message:@"This is My Alert" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:@"OK", nil];
[anAlert addButtonWithTitle:@"My Other Button"];
Если вам действительно нужна пользовательская кнопка, все становится сложнее.Заклинивать произвольные представления в UIAlertViews - мое хобби (см. Мои посты в блоге на тему здесь , здесь и здесь ).Однако во всех этих случаях представления оказываются выше обычных кнопок;кнопки привязаны к нижней части вида, и я не знаю, как изменить это поведение.
Одна вещь, которую вы можете сделать, это создать UIAlertView без кнопок, а затем создать и добавить столько пользовательских кнопок, сколько вы хотите.Во-первых, я хотел бы отметить, что это, вероятно, плохая идея.Это не будет хорошим опытом для пользователей, и, если вы не TapBots , придерживаться Apple HIG обычно хорошая идея.
Сказав все это,что-то вроде этого может работать:
UIAlertView* anAlert = [[UIAlertView alloc] initWithTitle:@"My Alert" message:@"This is My Alert\n\n\n\n" delegate:self cancelButtonTitle:nil otherButtonTitles:nil];
UIButton* okButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
okButton.frame = CGRectMake(12, 80, 130, 50);
[okButton setTitle:@"OK" forState:UIControlStateNormal];
[anAlert addSubview:okButton];
UIButton* cancelButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
cancelButton.frame = CGRectMake(144, 80, 130, 50);
[cancelButton setTitle:@"Cancel" forState:UIControlStateNormal];
[anAlert addSubview:cancelButton];
UIButton* otherButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
otherButton.frame = CGRectMake(12, 136, 260, 50);
[otherButton setTitle:@"My Other Button" forState:UIControlStateNormal];
[anAlert addSubview:otherButton];
Перевод строки в конце сообщения оповещения расширяет представление оповещения по горизонтали, освобождая место для добавления ваших кнопок.Здесь я просто делаю простые кнопки UIB (что выглядит ужасно);надеюсь, ваши пользовательские кнопки выглядят лучше.Вам нужно выложить их самостоятельно, жестко закодировав координаты, что является хрупким (и изменяется в зависимости от вашего сообщения и ориентации экрана).Наконец, так как нет никаких кнопок по умолчанию, нет способа отменить предупреждение, поэтому вам нужно обязательно прикрепить обработчики к этим кнопкам, чтобы это произошло.Вы можете сделать это с помощью addTarget:action:forControlEvents:
на кнопках.