LoginSignup
25
25

More than 5 years have passed since last update.

スワイプ(PanGesture)で標準キーボードを閉じることができるTKKeyboardControlを使ってみた件

Last updated at Posted at 2016-05-25

TKKeyboardControlとは

キーボードの上部から指でスーッと下に降ろすことでキーボードを閉じることができる機能を簡単に追加できるOSSです。

keyboard_test.gif

TKKeyboardControl

よく見かけるのは、FacebookのMessengerやAppleのメッセージアプリですね。

TKKeyboardControlを使うと、そういったメッセージ系のアプリを作る際には、ぜひ実現したい機能の一つである、

スワイプ(PanGesture)で標準キーボードを閉じれるようにすること

が簡単に実現できるようになっています。

使い方

追加するソースコードはたったの4行なので、とても簡単に導入できます。

1. 導入する

CocoaPodsかマニュアルで導入することができます。

1-a. CocoaPodsで導入する

以下の内容でPodfileを作成し、pod install します。
Swiftからはuse_frameworks!が無いとエラーになりますので、ご注意を。

Podfile
platform :ios, '8.0'
use_frameworks!

pod 'TKKeyboardControl'

1-b. マニュアルで導入する

下記リンクからソースコードをダウンロードし、中身のTKKeyboardControlディレクトリをプロジェクトに追加してください
https://github.com/cztatsumi-keisuke/TKKeyboardControl/archive/master.zip

2. 動きを追加したいViewControllerにインポートする

動きを追加したいViewControllerに下記のコードでインポートします。

import TKKeyboardControl

3. PanGestureの動きをキーボードに付与する

ViewControllerのviewDidLoad()に下記コードを追加します。
これでキーボードをスワイプで閉じれるようになります。

self.view.addKeyboardPanningWithFrameBasedActionHandler({ (keyboardFrameInView, opening, closing) in
            // ここはPanGestureが変化するたびに呼ばれます
            }, constraintBasedActionHandler: nil)

4. deinitにObserverを解放するためのメソッドを追加

最後に、deinitに下記コードを追加して完成です。

self.view.removeKeyboardControl()

PanGestureが効く始点を変更する

メッセージ系のアプリにおいて、キーボードの上部にはサンプルのようなテキストボックスを実装することがほとんどです。
その場合、keyboardTriggerOffsetプロパティを設定して、PanGestureが効く始点をテキストボックスの上部からに変更します。

// テキストボックスの高さ
let inputBaseViewHeight: CGFloat = 40

// PanGestureが効く始点をテキストボックスの上部からに設定
self.view.keyboardTriggerOffset = inputBaseViewHeight

self.view.addKeyboardPanningWithFrameBasedActionHandler({ (keyboardFrameInView, opening, closing) in
            // キーボードの伸縮に合わせてテキストボックスのY座標が変化するようにする
            self.inputBaseView.frame.origin.y = keyboardFrameInView.origin.y - inputBaseViewHeight
            }, constraintBasedActionHandler: nil)

マニュアルでキーボードを閉じる

マニュアルでキーボードを閉じたい場合は、下記のメソッドを使います。

self.view.hideKeyboard()
25
25
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
25
25