iOS 5のiMessageで実装されたスワイプダウンでソフトウェア・キーボードを閉じる機能。
これが超快適なので「するぷろ for iPhone」でも実装したくなり、いち早く実装していたFastEver作者の@frnkさんに方法を聞いてみたら、「あれ簡単ですよ。UIGestureRecognizer使ってすぐできます。」とアドバイスいただき、実際に書いてみたら、ホントにちょー簡単に実装できたので、その方法を備忘録として記事にしておきたいと思います。
てかスワイプダウンによるキーボードを閉じる機能ってなんなのか。
FastEverやiMessageでこのように下にスワイプしてみましょう。
すると、このようにキーボードが閉じて広々とテキストビューをみまわせる機能のことです。
関連:これが「次代の操作感」!FastEverがスワイプダウンでキーボードを隠す機能を搭載!!
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のアレっぽく下ろせます。