при нажатии на UITextField появляется средство выбора, но kwyboard не исчезает

У меня есть табличное представление, содержащее 10 ячеек, и каждая ячейка имеет текстовое поле. До текстового поля 5 я хочу, чтобы пользователь вводил какое-то значение с помощью клавиатуры. В текстовом поле 6 я хочу, чтобы пользователь выбирал значения из списка (показывая вид выбора). Что происходит, когда я нажимаю на поле 5 (показывая клавиатуру), ввожу какое-то значение, а затем нажимаю кнопку возврата (на клавиатуре), клавиатура опускается, а затем я нажимаю на текстовое поле 6 (показывая средство выбора), отображается средство выбора (здесь не отображается клавиатура).

НО, если я не нажму кнопку возврата на клавиатуре (в поле 5) и напрямую нажму на поле 6 (выборщик), то мой выборщик появится с клавиатурой вверху, то есть клавиатура не опускается, а средство выбора появляется за клавиатурой. . Здесь, когда я нажимаю на возврат клавиатуры, клавиатура также не отключается. Чтобы клавиатура опустилась, мне нужно щелкнуть любое текстовое поле (показывающее клавиатуру), а затем нажать клавишу возврата.

Кто-нибудь сталкивался с этой странной проблемой?? Пожалуйста, помогите мне.


person anshul    schedule 23.12.2011    source источник
comment
в методе делегата didBeginEditing моего текстового поля я пишу этот код для отображения средства выбора: if (textField.tag==kStateTag) { [textField resignFirstResponder]; UIPickerView *stateListPicker = [[UIPickerView alloc]initWithFrame:CGRectMake(0,160,320,216)]; stateListPicker.tag = kStateListPickerTag; stateListPicker.delegate = self; stateListPicker.showsSelectionIndicator = YES; [self.view addSubview:stateListPicker]; [релиз stateListPicker]; }   -  person anshul    schedule 23.12.2011
comment
Я делаю alloc init для UIPickerView в этом методе, а затем добавляю этот сборщик в свое представление....   -  person anshul    schedule 23.12.2011


Ответы (2)


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

  • (BOOL) textFieldShouldBeginEditing: (UITextField *) textField

    {

    Если (textField.tag == 6)

    {
      [textField resignFirstResponder];
    }
    

    вернуть ДА; }

Наслаждаться!

person Hardik Shah    schedule 23.12.2011

Не добавляйте средство выбора в качестве подпредставления вручную. Установите его как inputView текстового поля (на cellForRowAtIndexPath), и ОС позаботится об отображении и скрытии за вас.

person jrturton    schedule 23.12.2011
comment
jrturton, я добавил текстовое поле в contentView UITableViewCell, то есть все текстовые поля, которые я добавил, являются локальными. Я выделил их в каждой строке, и после добавления их в свой cell.contentView я их выпустил. Я использовал теги для каждого из текстовых полей и добавил этот код в свой метод viewDidLoad: [((UITextField*)[tblTransferDetails. viewWithTag:kStateTag]) setInputView:stateListPicker]; но это не работает. :( - person anshul; 23.12.2011
comment
Извините, не понял, что это было в таблице. В этом случае сделайте это по адресу cellForRowAtIndexPath. Если вы держите представление выбора как переменную экземпляра, вам нужно создать его только один раз. Установите представление ввода равным нулю, если вы хотите, чтобы клавиатура отображалась (если ячейка используется повторно) - person jrturton; 23.12.2011
comment
Эй, jrturton, это сработало, но теперь проблема в том, что текстовое поле позволяет мне писать в нем (но клавиатура не отображается). Я не хочу, чтобы пользователь мог писать что-либо в этом текстовом поле. Он должен выбрать любой элемент в средстве выбора, а затем, когда он щелкнет за пределами представления средства выбора, средство выбора должно исчезнуть, а выбранный элемент должен отображаться в текстовом поле... - person anshul; 23.12.2011
comment
Это должен быть новый вопрос. - person jrturton; 23.12.2011