UITextField в UIAlertView не отвечает на вырезание / копирование / вставку при втором отображении - PullRequest
2 голосов
/ 11 марта 2010

Редактировать Повторная публикация ... Я случайно пометил свой предыдущий вопрос как "вики-сообщество" и не понял, что ответы на сообщения вики не создают репутацию.

Я добавляю UITextView в UIAlertView со следующим кодом:

 UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Enter Name Here" message:@"this gets covered!" delegate:self cancelButtonTitle:@"Dismiss" otherButtonTitles:@"OK!", nil];
 UITextField *myTextField = [[UITextField alloc] initWithFrame:CGRectMake(12, 45, 260, 25)];
 CGAffineTransform myTransform = CGAffineTransformMakeTranslation(0, 60);
 [alert setTransform:myTransform];
 [myTextField setBackgroundColor:[UIColor whiteColor]];
 [alert addSubview:myTextField];
 [alert show];
 [alert release];
 [myTextField release];

Если я помещу этот код в стандартный метод действия:

 - (IBAction)testAlertView:(id)sender {
  ...the above code...
 }

Тогда в первый раз, когда я покажу UIAlertView, всплывающее меню вырезать / скопировать / вставить будет отображено в UITextField, который был добавлен в UIAlertView. (Например, если я коснусь и удержу, после того, как я отпущу, всплывет «Вставить».

Проблема заключается в том, что после правильной работы в первый раз ни одна из кнопок вырезать / копировать / вставить не появится снова в следующий раз, когда я покажу UIAlertView (новый экземпляр), если я не перезапущу приложение. Кто-нибудь знает почему или как решить эту проблему?

Информация о бонусе

Я только что узнал, что могу заставить вещи работать всегда, если создаю оповещение show show в обратном вызове UIActionSheet. Например, это всегда работает (вырезать / скопировать / вставить всегда отображается, когда это необходимо в UITextField)

 - (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {
  ...the above code...
 }

Обновленная информация о бонусе

Оказывается, это работает при первом отображении всплывающего окна вырезать / копировать / вставить ... а не только при первом отображении UIAlertView Так, например, я могу показать и закрыть просмотр предупреждений несколько раз. И вырезать / копировать / вставить все равно будет работать при первом показе. Но после этого он больше не будет работать.

Кроме того ... если я добавлю UITextField (не в представлении предупреждений) и покажу там вырезать / скопировать / вставить, то он никогда не будет отображаться (даже в первый раз) в UITextField, который находится в представлении предупреждений. Таким образом, в конце концов проблема заключается в том, что вырезание / копирование / вставка отображается только в UITextField в UIAlertView, если он впервые показывает всплывающее окно редактирования в любом UITextField.

Есть идеи, что может произойти во втором случае, который заставляет вещи работать? Я не хочу использовать UIActionSheet в своем приложении, поэтому я хотел бы найти способ заставить его работать простым старым методом действия.

Спасибо, Джесси

1 Ответ

0 голосов
/ 04 февраля 2011

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

Это Apple, определенное использование UIAlertView

http://developer.apple.com/library/ios/documentation/userexperience/conceptual/mobilehig/UIElementGuidelines/UIElementGuidelines.html#//apple_ref/doc/uid/TP40006556-CH13-SW8

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

Извините, я не могу помочь.

...