2013-09-19 2 views
8

Итак, появился новый iOS 7, и я пытаюсь добавить несколько текстовых полей и меток в UIAlertviews. Мне нужно три. Я пытался добавить их в качестве подзонов, и это больше не работает. Я также попытался добавить несколько строк с UIAlertViewStylePlainTextInput, но, похоже, только возвращает одно текстовое поле.Несколько текстовых полей iOS в UIAlertview В IOS 7

Мне нужно добавить ярлыки, чтобы показать им, что и ввести. Есть ли способ выполнить эту задачу с новым iOS 7?

+0

Пожалуйста, покажите свой код. Ранее код работал в iOS6? – bengoesboom

+3

Вы не можете добавить subviews в 'UIAlertView'. Это не его цель. Вы можете использовать стандартную поддержку для 1 или 2 текстовых полей. Вместо добавления меток задайте свойство 'prompt' текстового поля. – rmaddy

+1

Хорошо спасибо, я видел, что вы можете сделать это на iOS 5. Я предполагаю, что они вытащили его на iOS 7. Я просто сделаю еще один взгляд и добавлю его, как спасибо за просмотр, за вашу помощь. –

ответ

14

Единственное решение, которое я нашел с помощью UIAlertView с несколькими текстовыми полями в iOS7, - это только для входа в систему.

использовать эту линию, чтобы инициализировать ваш alertView

[alert setAlertViewStyle:UIAlertViewStyleLoginAndPasswordInput]; 

и это, чтобы захватить вход пользователей:

user = [alert textFieldAtIndex:0].text; 
pw = [alert textFieldAtIndex:1].text 

Для других целей, чем Логин просматривать другие темы, как это на: UIAlertView addSubview in iOS7

+0

Yeuh спасибо за ответ. Я закончил создание пользовательского подзаголовка, который выглядел как uiAlertView. –

+2

Спасибо, этот ответ велик, а также указывает на то, как совершенно бесполезно UIAlertView ... сообщение от Apple ясное: идите и пишите код. Это самая эффективная вещь, которую вы можете сделать. –

12

Вы можете изменить accessoriesView на любой вкус customContentView в стандартном виде предупреждения в iOS7

[alertView setValue:customContentView forKey:@"accessoryView"]; 

Заметим, что вы должны вызвать его до [alertView шоу].

Простейшее иллюстрирующий пример:

UIAlertView *av = [[UIAlertView alloc] initWithTitle:@"TEST" message:@"subview" delegate:nil cancelButtonTitle:@"NO" otherButtonTitles:@"YES", nil]; 
UIView *v = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 50)]; 
v.backgroundColor = [UIColor yellowColor]; 
[av setValue:v forKey:@"accessoryView"]; 
[av show]; 

enter image description here

10

Если вы хотите добавить только два текстовые поля для вашего UIAlertView, вы можете использовать UIAlertViewStyleLoginAndPasswordInput и изменять текстовые поля следующим образом:

UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"Some Title" message:@"Some Message." delegate:self cancelButtonTitle:@"Okay" otherButtonTitles:@"No, thanks", nil]; 
alert.alertViewStyle = UIAlertViewStyleLoginAndPasswordInput; 
[alert textFieldAtIndex:1].secureTextEntry = NO; //Will disable secure text entry for second textfield. 
[alert textFieldAtIndex:0].placeholder = @"First Placeholder"; //Will replace "Username" 
[alert textFieldAtIndex:1].placeholder = @"Second Placeholder"; //Will replace "Password" 
[alert show]; 

Впоследствии в делегате UIAlertView вы можете просто получить текст, используя:

text1 = [alert textFieldAtIndex:0].text; 
text2 = [alert textFieldAtIndex:1].text; 
+1

Благодарим за добавление сведений о файле secureEntry и placeholder. Гораздо приятнее ответить из-за этого :-) –

+0

это не работает в ios 11. Есть ли идея, что кто-то может это предложить. –

Смежные вопросы