Надеюсь, у вас хороший день.
Вы можете попробовать вызвать этот метод в UITextField, для которого вы хотите показать клавиатуру (возможно, вызовите его после того, как пользователь коснется UITableViewCell):
textField.becomeFirstResponder()
, где «textField» - это имя переменной вашего UITextField.
Сообщите мне, решило ли это вашу проблему.
Edit # 1
Здравствуйте! Поскольку мое предыдущее решение не привело к желаемому поведению. На мой взгляд, есть еще одно решение, но я не пробовал его раньше.
В качестве введения в концепцию делегирования, есть метод, созданный Apple под названием «textFieldShouldEndEditing», который является вызывается Apple всякий раз, когда любая клавиатура исчезает в любом текстовом поле.
Этот метод создан Apple, но вы можете переопределить его ( т.е. настроить его ) в соответствии с вашими потребностями и адаптировать его поведение.
- Чтобы переопределить этот метод, вы должны назначить свой класс в качестве делегата UITextField, добавив UITextFieldDelegate в определение вашего класса следующим образом:
class YourClassName: UIViewController, UITextFieldDelegate { }
Теперь вы должны установить свой класс в качестве делегата, сказав textField.delegate = self
Для каждого UITextField, который вы создаете в представлениях вашей коллекции
Затем вы могут воссоздать метод, который мы обсуждали ранее, в вашем классе:
func textFieldShouldEndEditing(_ textField: UITextField) -> Bool {
//let's implement it the next steps, but for now, let's return true.
return true
}
Теперь вместо Apple вызова их версии метода они будут вызывать вашу.
Затем вы можете создать переменную на верхнем уровне вашего класса (я дам вам знать, где это будет полезно позже) и «возможно» назовите ее как:
var isCellBeingClicked = false
Теперь, щелкнув ячейку, сделайте эту переменную истинной, я полагаю, вы используете метод
didSelectRowAt
(но вы можете использовать любой другой метод, который подходит):
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
[...]
isCellBeingClicked = true
[...]
}
Теперь вернемся к нашему индивидуальному методу
textFieldShouldEndEditing
, упомянутому в шаге 3. Вы можете добавить эту реализацию:
func textFieldShouldEndEditing(_ textField: UITextField) -> Bool {
//If a cell is being clicked right now, please do not dismiss the keyboard.
if isCellBeingClicked {
isCellBeingClicked = false //reset the value otherwise the keyboard will always be there
return false
}
else { return true }
}
Пожалуйста, дайте мне знать, решит ли это вашу проблему.
С уважением