2009-02-18 3 views
1

У меня возникает пара проблем, когда я пытаюсь выделить UITextView на AlertView. Вот мой код:UITextView на UIAlertView (многострочный ввод)

UIAlertView* minhaCritica = [UIAlertView new]; 
minhaCritica.title = @"7Arte"; 
[minhaCritica addButtonWithTitle:@"Cancelar"]; 
[minhaCritica addButtonWithTitle:@"Enviar"]; 
minhaCritica.message = @"Escreve a tua crítica:\n\n\n\n"; 
minhaCritica.delegate = self; 
[minhaCritica show]; 

CGRect frame = minhaCritica.frame; 
frame.origin.y -= 100.0f; 
minhaCritica.frame = frame; 

criticaTxtView = [UITextView alloc]; 
[criticaTxtView setFont:[UIFont systemFontOfSize:16.0f]]; 
[criticaTxtView initWithFrame:CGRectMake(20.0, 80.0, 245.0, 40.0)]; 
[minhaCritica addSubview:criticaTxtView]; 
[criticaTxtView becomeFirstResponder]; 

моя проблема, когда я начинаю inputing текст, вид текста не прокручивается, как я типа. Он должен прокручивать одну строку вверх, когда первые 2 строки заполнены.

Может ли кто-нибудь помочь мне с этим? Вот видео, изображающее проблему: http://www.welove.com.pt/7arte.swf

Также у меня возникли проблемы с получением текста, введенного пользователем в поле. i работал с: criticaText = [[alertView textField] text]; , но теперь он не работает с кодом выше.

ответ

7

Я думаю, вы пытаетесь решить неправильную проблему. Согласно документам API, используется «Предупреждающий вид» «to display an alert message to the user». Вы не должны использовать его для ввода. Используйте вместо этого модальный вид или нечто подобное.

В соответствии с правилами пользовательского интерфейса платформы, как правило, является хорошей практикой, и, не делая этого, здесь может быть отклонено ваше приложение Apple.

+1

К сожалению, «соглашение UI» здесь, похоже, отображает обычный синий пузырь с полем ввода. Apple делает это все время. Именно по этой причине все разработчики пытаются вставить поле ввода в UIAlertView; единственная проблема здесь связана с тем, что Apple сохраняет частный API текстового поля. – zoul

+0

Согласен с zoul ... все, что вам нужно сделать, чтобы увидеть, что это сделать HTML-страницу и сделать ссылку, которая делает Javascript «alert (« ... »); с полным текстом лота в «...». Вы увидите, как Safari делает то, о чем спрашивает плакат. – Steve

+0

В 2008/9 году это было не так часто (только в магазине App Store/iTunes, насколько я помню), но даже Apple делает это много сейчас. Настолько, что в iOS5 они добавили API, в котором вы можете добавить до двух UITextFields. Я все еще думаю, что попытка добавить UITextView была бы ошибкой. –

4

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

Custom UIAlertView (Color chooser)

Embedding UITables into UIAlertViews

Alert View with Prompt

Эти методы кажутся законными с точки зрения и адрес в App Store как вставлять какие-либо элементы управления в предупреждения.

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