IOS: перетаскивание взаимодействия без скрытия клавиатуры - PullRequest
0 голосов
/ 22 ноября 2018

Настройка:
У меня есть класс myView, полученный из UIView, который правильно настроен для перетаскивания (и перетаскивания, но падение не имеет значения для этого вопроса).Это означает, что зарегистрировано UIDragInteraction представление view.addInteraction и действие перетаскивания работает нормально (конкретные элементы перетаскивания и другая реализация не имеют значения).

Допустим, клавиатура отображается на экране(например, потому что UITextField выбран и стал первым респондентом), инициирование взаимодействия перетаскиванием путем касания и перетаскивания объекта всегда приводит к отклонению клавиатуры.Увольнение происходит после того, как элемент перетаскивания был снят и перемещен пользователем.

Мой вопрос: Как можно избежать отклонения клавиатуры, когда происходит перетаскивание?

Дальнейшие исследования:
Я предположил, что взаимодействие перетаскивания каким-то образом вызывает resignFirstResponder() для UITextField, но даже отключает resignFirstResponder, переопределяя его в подклассе и позволяя замене делатьничто не мешает сбрасывать клавиатуру.

1 Ответ

0 голосов
/ 23 ноября 2018

Скажем, в вашем сценарии у вас есть UITextField внутри UIScrollView, который выбран.Вы можете получить доступ к keyboardDismissMode из соответствующего UIScrollView и установить его значение на .none.

Пример

Внутри UIViewController объявите ссылку на UIScrollView иподключите его через раскадровку.

@IBOutlet weak var scrollView: UIScrollView!

Затем в методе viewDidLoad() установите свойство, как указано выше.

override func viewDidLoad() {

    super.viewDidLoad()

    // Configure UIScrollView
    self.scrollView.keyboardDismissMode = .none

}
...