Подтвердить что ты не робот

Отображение клавиатуры и курсора, но я не могу вводить внутри UITextFields и UITextViews

На iPad с iOS 6 GM. У меня есть 6 UITextFields, 3 UITextViews и UIButton, которые запускают popover/таблицу действий.

Когда я выбираю один из UITextFields или UITextViews, клавиатура появляется и появляется курсор, но я не могу ввести текст. Если я нажимаю UIButton, чтобы показать popover, а затем коснуться его, чтобы отменить его и вернуться к UITextFields или UITextViews, они работают.

У меня UITextxxxx.delegate = self; для всех. "Enabled" и "User Interaction Enabled" отмечены в xib, UITextFieldDelegate и UITextViewDelegate в моем файле .h, а также:

- (BOOL)disablesAutomaticKeyboardDismissal {
    return NO;
}


- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField {

    return YES;

}

- (BOOL)textFieldShouldEndEditing:(UITextField *)textField {

    return YES;

}

- (IBAction)textFieldReturn:(id)sender {

    [sender resignFirstResponder];
}



- (BOOL)textViewShouldBeginEditing:(UITextView *)textView {

    if (textView == notestextView){
        [notestextView becomeFirstResponder];
    }
    if (textView == notestextViewTwo){
        [notestextViewTwo becomeFirstResponder];
    }
    if (textView == notestextViewThree){
        [notestextViewThree becomeFirstResponder];
    }

    return YES;

}

- (BOOL)textViewShouldEndEditing:(UITextView *)textView {

    return YES;

}

Я даже пытался [xxxxxxx стать FirstResponder]; in viewDidLoad. Это выталкивает клавиатуру и помещает курсор в поле во время выполнения, но я все еще не могу ввести его, пока не нажму UIButton, чтобы показать popover.

Кто-нибудь знает, почему я не могу вводить поля и почему включение popover "исправляет его"?

UPDATE 9/18: Я нажал новое представление в своем приложении, которое просто имеет представление с текстовым полем и текстовым просмотром. Все делегаты настроены. Такое же поведение. Появляется клавиатура и курсор, но нет ввода. Это исключает, что popovercontroller возится с вещами.

Я начинаю думать, что это ошибка iOS 6. Это почти то же мнение, что и в iPhone версии моего приложения на iOS 4 и 5, и у меня никогда не было проблемы. Единственная разница между версией iPhone и iPad - это то, как представлен образ. Вы должны использовать popover для iPad. Вот почему я думал, что делегат popover имел к этому какое-то отношение.

Есть ли какая-либо принципиальная разница между реализацией UITextFields и UITextViews в iOS 6, о которых я не знаю? Кажется маловероятным.

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

Основной вид с 10 кнопками

  • каждая кнопка выталкивает таблицу с помощью навигационного контроллера.
  • tableviews push detail view - текстовые поля и текстовые изображения демонстрируют поведение, описанное выше.
  • tableview также имеет кнопку добавления, которая подталкивает модальное представление для добавления новых элементов. Текстовые поля и текстовые изображения демонстрируют поведение, описанное выше.
4b9b3361

Ответ 1

Первоначально это приложение для iPhone, построенное на iOS 5. Чтобы сделать его iPad-приложением, я просто продублировал проект и обновил все версии .xibs до iPad. Я не знаю, было ли это ошибкой или нет, или если это что-то связано с обновлением до iOS 6, но это делает что-то вроде MainWindow.xib.

В элементе MainWindow xib я набрал "MainViewController" для заголовка (он был ранее пустым.)

enter image description here

И отметьте "Visible at Launch". Несмотря на то, что он уже виден на старте, не имея того, чтобы проверить что-то винтом.

enter image description here

Теперь все мои текстовые представления и текстовые поля работают.

Ответ 2

Я столкнулся с этой же проблемой, убедитесь, что делегат приложения имеет [self.window makeKeyAndVisible]. Это решило это для меня.

Ответ 3

Для меня ваше решение не работает, поэтому я нашел другое.

Я использую объявления Revmob, поэтому полноэкранный просмотр и просмотр баннера загружаются при запуске приложения. Revmob использует некоторый штат для отображения одного и того же баннера во всех контроллерах view, я думаю, что здесь проблема. Когда я отключил revmob, я могу добавить текст в свое текстовое поле.

Ответ 4

Это, по-видимому, ошибка в iOS 6. Просто поместите метод [searchBar becomeFirstResponder]; в searchBarTextDidBeginEditing:

- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar
{
    if (!self.window.isKeyWindow) {
        [self.window makeKeyAndVisible];
    }
}

Это решение работает для меня.

Ответ 5

Эти решения не сработали для меня, но после того, как я удалил папку с производными данными в ~/Library/Developer/Xcode/DerivedData/AppName, она сработала.

Ответ 6

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

При работе с несколькими окнами убедитесь, что resignKeyWindow + makeKeyWindow при переключении фокуса и, что очень важно, восстановить окно ключа после этого!

Ответ 7

Попробуйте стать FirstResponder в dispatch_async(dispatch_get_main_queue(),^{});