Когда пользователь нажимает мою кнопку «импорт», он должен иметь возможность ввести URL-адрес, который он может затем «ок» или «отменить».
Как мне это сделать?
Очевидно, я мог бы создать новый вид, содержащий текстовое поле и 2 кнопки.Но это похоже на кодирование.
Одно решение, которое я нашел, включает в себя «взлом» UITextField в UIAlertView: http://iphone -dev-tips.alterplay.com / 2009/12 / username-and-password-uitextfields-in.html
(РЕДАКТИРОВАТЬ: Лучше - http://www.iphonedevsdk.com/forum/iphone-sdk-development/1704-uitextfield-inside-uialertview.html#post10643)
Это выглядит действительно ужасно.Это явно хак.
Кто-нибудь может предложить лучшее решение (или даже лучшую реализацию того же пути решения)?
OK После тонны копания, вот результат.
Во-первых, включение UITextField UIAlertView в поиск SO возвращает десятки хитов.
Оказывается, есть способ сделать это, Нужен новый способ добавить UITextField в UIAlertView , но это частный API: |
Практически любое другое решение включает в себя взлом UIAlertView, что ужасно: http://junecloud.com/journal/code/displaying-a-password-or-text-entry-prompt-on-the-iphone.html http://iphone -dev-tips.alterplay.com / 2009/12 / имя пользователя-и-пароля uitextfields-in.html https://github.com/josecastillo/EGOTextFieldAlertView/ Как переместить кнопки в UIAlertView, чтобы освободить место для вставленного UITextField? ^ Ответ MrGando аккуратный http://iphonedevelopment.blogspot.com/2009/02/alert-view-with-prompt.html Получение текста из UIAlertView
Единственное правильное решение, которое я нашел (т.е. кодирование с нуля из UIView), здесь: https://github.com/TomSwift/TSAlertView
Это все, что нужно:
- (IBAction) importTap { TSAlertView* av = [[[TSAlertView alloc] init] autorelease]; av.title = @"Enter URL"; av.message = @""; [av addButtonWithTitle: @"Ok"]; [av addButtonWithTitle: @"Cancel"]; av.style = TSAlertViewStyleInput; av.buttonLayout = TSAlertViewButtonLayoutNormal; av.delegate = self; av.inputTextField.text = @"http://"; [av show]; } // after animation - (void) alertView: (TSAlertView *) alertView didDismissWithButtonIndex: (NSInteger) buttonIndex { // cancel if( buttonIndex == 1 ) return; LOG( @"Got: %@", alertView.inputTextField.text ); }
и Presto!
Я создал пост в своем блоге на тему «Как добавить UITextField в UIAlertView из XIB».Использовать XIB для добавления проще, чем чистое кодирование.Вы можете добавить все что угодно в настраиваемое маленькое представление, а затем добавить маленькое представление в AlertView, используя 1-строчный код.Пожалуйста, обратитесь к следующей ссылке.
http://creiapp.blogspot.com/2011/08/how-to-add-uitextfield-to-uialertview.html
Выезд: https://github.com/enormego/EGOTextFieldAlertView