和洋風KAI

【Objective-C】UISwipeGestureRecognizerをつかってiMessageのようにスワイプダウンでキーボードを閉じる方法。

iOS 5のiMessageで実装されたスワイプダウンでソフトウェア・キーボードを閉じる機能。

これが超快適なので「するぷろ for iPhone」でも実装したくなり、いち早く実装していたFastEver作者の@frnkさんに方法を聞いてみたら、「あれ簡単ですよ。UIGestureRecognizer使ってすぐできます。」とアドバイスいただき、実際に書いてみたら、ホントにちょー簡単に実装できたので、その方法を備忘録として記事にしておきたいと思います。

てかスワイプダウンによるキーボードを閉じる機能ってなんなのか。

FastEverやiMessageでこのように下にスワイプしてみましょう。


すると、このようにキーボードが閉じて広々とテキストビューをみまわせる機能のことです。

関連:これが「次代の操作感」!FastEverがスワイプダウンでキーボードを隠す機能を搭載!!

価格: ¥170 (記事公開時)
カテゴリ: 仕事効率化
App Storeでダウンロードする。

UISwipeGestureRecognizerを使って実装する。

それではどんな機能かわかったところで、さっそく実装してみましょう。スワイプを検知するUISwipeGestureRecognizerを使うことで、驚くほど簡単に実装可能です。サンプルコードは以下の通り。

- (void)viewDidLoad {
[super viewDidLoad];
UISwipeGestureRecognizer *downSwipeGesture = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeDownMethod:)];
downSwipeGesture.direction = UISwipeGestureRecognizerDirectionDown;
[self.view addGestureRecognizer:downSwipeGesture];
[downSwipeGesture release];
}
- (void)swipeDownMethod:(id)sender{

[textView resignFirstResponder];
}

self.view上でスワイプダウンを検知したら、swipeDownMethodが動くという仕組みですね。いやー簡単にタッチ操作を使えるようになるUIGestureRecognizer便利すぎる。

ただ、このUIGestureRecognizerは、iOS 4以上じゃないと使えないので注意が必要です。iOS 3以下のものに実装するにはtouchesbeganを使えばいいのかな?

というわけで、このキーボードをスワイプダウンで閉じる機能は、現在作成中のするぷろ for iPhone ver1.3で実装予定です。ホント便利なのでお楽しみに!

追記: 本家のiMessageのものは指に追随してキーボードを下ろせるので、このコードでは挙動は完全に同じにはなりません。あくまでiMessageのアレっぽく下ろせます。