iOS7リリースということで、新しいクラスでも紹介してみる。
そう、それは、ジェスチャの新顔。
UIScreenEdgePanGestureRecognizer
名前の通り、デバイスのエッジからのドラッグを検知してくれるクラス。
プロパティに edges というのがあるので、ここに検知したいデバイスの方向を指定。
具体的には、これまたOS7から加わった以下の列挙型から選ぶ。
typedef NS_OPTIONS(NSUInteger, UIRectEdge) { UIRectEdgeNone = 0, UIRectEdgeTop = 1 << 0, UIRectEdgeLeft = 1 << 1, UIRectEdgeBottom = 1 << 2, UIRectEdgeRight = 1 << 3, UIRectEdgeAll = UIRectEdgeTop | UIRectEdgeLeft | UIRectEdgeBottom | UIRectEdgeRight } NS_ENUM_AVAILABLE_IOS(7_0);
ばっちり、上下左右が網羅されている模様。
リファレンスにもあるように、このプロパティは相対的なものなので
アプリのオリエンテーションによって適切に方向を判定してくれる(縦で左なら、横でも左。下とか上にはならない)。
上下左右が指定可能ではあるものの、スクリーンの上と下のジェスチャには
それぞれノーティフィケーションセンターとコントロールセンターが割り当てられているので
実質的に使えるのは左と右くらいだったりはする(コントロールセンターは設定でオフにできるので、そうすれば下からのジェスチャは検知できる。上は……どうしようもない)。
なお、動作確認は実機でないと無理くさい。
3.5inch のシミュレータには一応エッジがあるので、いけるかと思ったけどダメだった。
実装したところで、気づかれない可能性もなくはないけれど
ジェスチャが足りないと感じたら使ってみるとよろしい。
で、OS7のナビゲーションコントローラが早速このジェスチャを取り込んでいたり。
これまでは左上のボタンをタップして戻るしかなかったけど、左エッジからのドラッグでも戻れるようになってる。
スクリーンが大きくなって、片手では上にあるボタンが押しにくかった不満がこれで解消。
やったね!
……でも、これに気づく人がどれだけいるのやら。