it-swarm.com.ru

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

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

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

У меня есть UITextxxxx.delegate = self; установить для всех из них. "Включено" и "Взаимодействие с пользователем включено" отмечено в xibs, 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]; в viewDidLoad. Это выдает клавиатуру и помещает курсор в поле во время выполнения, но я все еще не могу набрать его, пока не коснусь кнопки UIB для отображения всплывающего окна.

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

ОБНОВЛЕНИЕ 9/18: я выдвинул новое представление в моем приложении, которое просто имеет представление с текстовым полем и текстовым представлением. Все делегаты настроены. Такое же поведение Клавиатура и курсор появляются, но без ввода. Это исключает, что popovercontroller возится с вещами.

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

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

Если это помогает, мое приложение течет так:

Главный вид с 10 кнопками

  • каждая кнопка выдвигает табличное представление через контроллер навигации
  • табличные представления Нажмите подробный вид - текстовые поля и текстовые представления демонстрируют поведение, описанное выше
  • tableview также имеет кнопку добавления, которая выдвигает модальное представление для добавления новых элементов - текстовые поля и текстовые представления демонстрируют поведение, описанное выше
19
RyeMAC3

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

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

enter image description here

И проверил "Visible at Launch". Даже при том, что это уже видно при запуске, не проверяя что-то винты вверх.

enter image description here

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

38
RyeMAC3

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

13
Matthew Smith

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

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

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

2
Borut Tomazin

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

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

2
Danil

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

0
Rose Perrone

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

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

0
Rivera

Попробуйте стать первым ответчиком в dispatch_async(dispatch_get_main_queue(),^{});

0
NovemberEleven