Как скрыть клавиатуру сразу после нажатия на текстовое поле? - PullRequest
0 голосов
/ 24 февраля 2019

У меня есть пользовательское текстовое поле.Он открывает всплывающее окно, используя UITableViewController, когда пользователь нажимает на него.

Я хотел, чтобы клавиатура не всплывала для моего текстового поля, похоже, это невозможно.

Поэтому я попробовал следующий код, который работает в симуляторе,но это не работает для реального iPhone !!!

    @IBAction func provincePressed(_ sender: Any) {
         (sender as AnyObject).resignFirstResponder()
         self.view.endEditing(true)

Что не так?и как я могу заставить его работать на реальном iPhone?или, возможно, запретить отображение клавиатуры вообще!

Ответы [ 5 ]

0 голосов
/ 24 февраля 2019

Вы можете просто отключить взаимодействие с пользователем из UITextField, закрыть его UIView и добавить uigesturerecognizer в это представление, чтобы вызвать ваше событие.

0 голосов
/ 24 февраля 2019

Это в соответствии с ответом SafoineMoncefAmine.

-(void)textFieldDidBeginEditing:(UITextField *)textField {     
    if (textField == yourTextfield) {// No need tag Use QA Manager to handle the textfield

       textField.resignFirstResponder()
       // Open your menu here, add view, show the menu here.

    }
}

В дополнение к этому ответу,

extension MyViewController: UITextFieldDelegate {
    func textField(_ textField: UITextField,
                   shouldChangeCharactersIn range: NSRange,
                   replacementString string: String) -> Bool {
        if textField == YourTextField{
        return false
        }
        else{
        return true
        }
    }
}
0 голосов
/ 24 февраля 2019

Swift 4

Вы можете просто вызвать textField.resignFirstResponder() внутри textFieldDidBeginEditing метод, подобный этому:

-(void)textFieldDidBeginEditing:(UITextField *)textField {     
    if (textField.tag == 1) {
        //this is textfield 2, so call your method here
       textField.resignFirstResponder()
    }
}

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

Также не забудьте расширить свой ViewController с UITextFieldDelegate и делегировать textField своему ViewController.

textField.delegate = self

0 голосов
/ 24 февраля 2019

Заранее установите текстовое поле isEnabled на false.

0 голосов
/ 24 февраля 2019

Попробуйте вернуть false в методе textFieldShouldBeginEditing

func textFieldShouldBeginEditing(textField: UITextField) -> Bool {
  return false
}
...