Добавить текстовое поле в UIAlertView - PullRequest
2 голосов
/ 18 января 2012

Есть ли простой способ добавить текстовое поле в UIAlertView и получить текст из него?

Ответы [ 4 ]

3 голосов
/ 18 января 2012

Поля ввода в UIAlertView изначально поддерживаются iOS SDK 5 и выше.Если вам нужна поддержка версии 4, вам понадобится немного взломать.

Однажды я сделал пример кода для Montouch.Не очень чисто, но это должно дать вам идею:

http://wildsau.net/post/2011/01/28/iOS-UIAlertView-with-a-UITextField-a-MonoTouch-implementation.aspx

И, да, это будет одобрено Apple без проблем.

2 голосов
/ 18 января 2012

iOS 5.0 представлена ​​UIAlertViewStyle.Есть 4 варианта на выбор, по умолчанию, который у нас всегда был, плюс 3 других, которые включают UITextField s.

Если вы хотите поддерживать версии iOS до 5.0, вы можете настроить эти alertViews самостоятельно (ясделал это в приложении, которое я только что выпустил).Таким способом вы можете добавить либо / и UITextField s, и UILabel s.

Я реализовал alertView следующим образом:

UIAlertView *changeEmailAlert = [[UIAlertView alloc] initWithTitle:@"Change Email Address" message:@"\n\n" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"OK", nil];

Сообщение (\ n \ n) имеет строкуперерывы, чтобы освободить достаточно места, чтобы соответствовать размеру моих UILabel и UITextField.

Затем просто добавьте UILabel и UITextField как подпредставления UIAlertView, так же, как вы быдобавьте подпредставление где-нибудь еще.

Вот важная часть: вам нужно сохранить текст в UITextField перед тем, как закрыть alertView.Я использую -(void)textFieldDidEndEditing:(UITextField *)textField, чтобы получить введенный текст и сохранить его в переменной, которая будет доступна позже.

2 голосов
/ 18 января 2012

Начиная с iOS5, вы можете добавлять текстовые поля в UIAlertViews, включая поля защищенного пароля.Вот ссылка на учебник:

http://mobile.tutsplus.com/tutorials/iphone/ios-5-sdk-uialertview-text-input-and-validation/

1 голос
/ 18 января 2012

Если вам нужно решение не только для iOS5, UIAlertViews - это просто представления, как и все остальное.Вы можете создавать их подклассы, добавлять дополнительные свойства и подпредставления.

Ничто не мешает вам создать подкласс UIAlertView, который имеет свойство текстового поля, реализует протокол делегата текстового поля и добавляет текстовое поле в свою собственную иерархию представления, когда вы создаете его экземпляр.

Может быть сложнее заставить его выглядеть хорошо, а выполнение таких вещей, как перемещение других подпредставлений вокруг, чтобы освободить место для текстового поля, может включать в себя некоторые хрупкие взломы, такие как циклический просмотр неназванных подпредставлений в представлении оповещения и захват одного из них.индекс.Но это практически единственный способ сделать это на iOS4 и более ранних версиях, и многие приложения используют этот подход.

...