Нажатие между UITextFields в iOS7

Когда выбран UITextField и отображается клавиатура, если я коснусь других частей представления, клавиатура исчезнет.

Если я нажму еще один UITextField, клавиатура останется включенной, первое текстовое поле будет отменено, и ничего не произойдет. Затем мне нужно снова нажать на другой UITextFIeld, чтобы произошел выбор и появилась клавиатура.

Есть ли способ сделать второй UITextField немедленно доступным при выборе первого UITextField?


person Stefan Kendall    schedule 25.02.2014    source источник
comment
Пожалуйста, покажите код, который вы используете для закрытия клавиатуры.   -  person Wayne Hartman    schedule 25.02.2014
comment
У вас может быть кнопка «Далее» в качестве кнопки возврата, а в делегате, когда она нажата, сделайте второй UITextField первым ответчиком.   -  person zaheer    schedule 25.02.2014
comment
Стефан — это не нормальное поведение (вы должны убедиться в этом, создав базовое приложение с одним представлением и двумя текстовыми полями). Что-то в вашем коде вызывает такое поведение.   -  person Aaron Brager    schedule 25.02.2014
comment
У меня нет кода для отключения клавиатуры. Я использую TPKeyboardAvoidingTableview (cocoapod), и это единственное, что, по моему мнению, может повлиять на это. Я постараюсь создать здесь минимальный сбой и отследить это.   -  person Stefan Kendall    schedule 25.02.2014


Ответы (4)


Если вы перезагрузите табличное представление в textFieldDidEndEditing, вы нарушите выбор таким образом. Не делай этого.

person Stefan Kendall    schedule 26.02.2014

попробуй, нажми другой вид должен позвонить ниже fn.

-(void)disappearKey{
[self.view endEditing:YES];
}

после того, как клавиатура исчезнет, ​​коснитесь любого текстового поля, появится клавиатура.

person Nag Raja    schedule 26.02.2014

Прежде всего, я думаю, что это ошибка, из-за которой клавиатура не закрывается и не открывается снова при нажатии на другой UITextField или UITextView. Об этом следует сообщить, и Apple должна это исправить.

Используя методы делегата текстового поля и регистрацию для уведомления клавиатуры, должна быть возможность вручную отслеживать, нажимал ли пользователь на другое текстовое поле, а клавиатура не закрывалась и не открывалась снова. По крайней мере, вы должны быть в состоянии определить, когда это происходит, и закрыть клавиатуру вручную с помощью [textField resignFirstResponder];

Уведомление клавиатуры выглядит следующим образом:

UIKeyboardWillShowNotification
UIKeyboardDidShowNotification
UIKeyboardWillHideNotification
UIKeyboardDidHideNotification

Я уверен, что вы знакомы с методами делегирования UITextfield и textview.

 – textFieldShouldBeginEditing: 
 – textFieldDidBeginEditing:
 – textFieldShouldEndEditing:
 – textFieldDidEndEditing:

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

person Paulo    schedule 25.02.2014
comment
Я попробую это сегодня вечером. Я совершенно уверен, что DidEndEditing не срабатывает, когда нажимается второе текстовое поле, но клавиатура остается нажатой, если у меня есть кнопка «Готово». - person Stefan Kendall; 25.02.2014

  • вы можете использовать BSKeyboardControls. просто посмотрите демо и решите использовать или нет.

  • или вы можете последовательно установить тег для каждого текстового поля
    в uiview. затем используйте приведенный ниже код.

    -(BOOL)textFieldShouldReturn:(UITextField*)textField
    
    {
         NSInteger nextTag = textField.tag + 1;
    
         UIResponder* nextResponder = [textField.superview viewWithTag:nextTag];
    
         if (nextResponder) {
    
        [nextResponder becomeFirstResponder];
    
        } else {
    
        [textField resignFirstResponder];
     }
    return NO; 
    }
    
person utkal patel    schedule 25.02.2014
comment
Это не обязательно следующее текстовое поле. У меня есть 8 на экране, и любой из них является допустимой целью, которую нужно нажимать. - person Stefan Kendall; 25.02.2014