読者です 読者をやめる 読者になる 読者になる

UIScrollView の keyboardDismissMode を設定してドラッグ時に自動でキーボードを閉じる

ios swift

環境: Xcode8.2.1, Swift3

UIScrollView 上に UITextField / UITextView を乗せている場合はkeyboardDismissModeプロパティを設定することで自動でキーボードを閉じることができる。

Storyboardの場合

f:id:xyk:20170309155712p:plain

コードの場合

// デフォルト設定。UIScrollView をドラッグしてもキーボードは閉じない
self.scrollView.keyboardDismissMode = .none

// dismisses the keyboard when a drag begins
// UIScrollView のドラッグ開始時にキーボードを閉じる
self.scrollView.keyboardDismissMode = .onDrag

// the keyboard follows the dragging touch off screen, and may be pulled upward again to cancel the dismiss
// UIScrollView を下方向ドラッグで上にスクロールするのに合わせてキーボードを閉じる
self.scrollView.keyboardDismissMode = .interactive

Dissmiss on drag設定時は UIScrollView のドラッグを開始するとすぐキーボードが閉じられる。
これを設定しておけばよさそう。

Dissmiss interactively設定時の挙動は以下のようになる。

f:id:xyk:20170309161010g:plain