事象
Swiftのフォーム生成ライブラリEurekaを使用していますが、keyboardDismissMode = .interactiveにしてもインタラクティブにならず、onDragを指定した状態になってしまう問題が発生しました。
解決方法を確認したのでメモしておきます。
scrollViewWillBeginDragging をオーバーライドする
FormViewController
の実装を確認すると、UIScrollViewDelegate
の実装の中で、キーボードのハンドリングをしていました。
extension FormViewController : UIScrollViewDelegate {
// MARK: UIScrollViewDelegate
open func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {
guard let tableView = tableView, scrollView === tableView else { return }
tableView.endEditing(true)
}
}
tableView.endEditing(true)
によって、キーボードを非表示にしているようです。
そのため、FormViewController
を継承ているViewController
側で、scrollViewWillBeginDragging
をオーバーライドして、keyboardDismissMode
を.interactive
に設定することで、キーボードをインタラクティブに非表示にすることができます。
override func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {
}