Сокрытие клавиатуры при перезагрузке табличного представления или при перезагрузке определенной строки или при вставке и удалении - PullRequest
1 голос
/ 05 апреля 2019

У меня есть ячейка табличного представления, в которой есть другое табличное представление, в котором у меня есть текстовое поле, и если я изменяю значение текстового поля, мне нужно перезагрузить табличное представление или перезагрузить эту конкретную строку, но она скрывает клавиатуру, поскольку таблица перезагружается. Есть идеи сохранить клавиатуру как есть ???

Я попробую следовать рекомендациям stackoverflow, но это не работает для меня.

Держите UIKeyboard поднятым во время перезагрузки раздела UITableView

Также попробуйте следующие коды.

[self.tblADMEDesign beginUpdates];
[self.tblADMEDesign insertRowsAtIndexPaths:@[selectedIndexPath] withRowAnimation:UITableViewRowAnimationRight];
[self.tblADMEDesign deleteRowsAtIndexPaths:@[selectedIndexPath] withRowAnimation:UITableViewRowAnimationNone];
[self.tblADMEDesign endUpdates];
[self.tblADMEDesign beginUpdates];
[self.tblADMEDesign endUpdates];
[self.tblADMEDesign beginUpdates];
[self.tblADMEDesign reloadRowsAtIndexPaths:@[selectedIndexPath] withRowAnimation:UITableViewRowAnimationNone];
[self.tblADMEDesign endUpdates];

1 Ответ

0 голосов
/ 05 апреля 2019

Это - лучшее решение, чтобы держать клавиатуру открытой во время перезагрузки UITableView содержимого.

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

Пожалуйста, следуйте приведенным ниже инструкциям, я уверен, что это сработает для вас.

  • Возьмите один манекен UITextField на ваш взглядcontroller(Storyboard)
  • Дайте constraints как хотите (не имеет значения)
  • Всегда держите скрытую пустышку UITextField всегда с раскадровки.
  • Возьмите outlet скрытогопустышка UITextField в файл класса.
  • Теперь время для взлома до reloadData(), просто позвоните txtDummy.becomeFirstResponder()

См. приведенный ниже код, который я сделал для решения проблемы.

class ViewController: UIViewController,UITableViewDelegate,UITableViewDataSource {

      @IBOutlet weak var txtDummy: UITextField!
        @IBOutlet weak var tblView: UITableView!

        override func viewDidLoad() {
            super.viewDidLoad()
            tblView.register(UINib.init(nibName: "CustomTableViewCell", bundle: nil), forCellReuseIdentifier: "CustomTableViewCell")
        }

        func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
            return 10
        }

        func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
            let cell = tableView.dequeueReusableCell(withIdentifier: "CustomTableViewCell", for: indexPath) as! CustomTableViewCell
            cell.txtField?.text = "text"
            return cell
        }

        @IBAction func reloadtable(){
            txtDummy.becomeFirstResponder()
            tblView.reloadData()
            //Perform other operation after some delay
        }
    }

Screenshot of Storyboard

См. Ниже прилагаемый исходный код демонстрационного приложения.Если потребуется дальнейшая помощь.

Исходный код

Пожалуйста, отметьте как принятый, если он будет работать для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...