カテゴリー : 2011年 12月2日

UIGestureRecognizerはけっこう鬼門


iOS 3.2以降、つまりiPad登場以降に付け加えられた、UIGestureRecognzierというクラスがある。iPhoneやiPadのタッチパネルを操作する際の、いろんなジェスチャーを認識してくれるものだ。タップ、ピンチ、回転、スワイプ、パン、長押しなんかを認識してくれる。このクラスの登場前は自前で判断ルーチンを作らなくてはいけなかったので、かなり便利だ。

最近になって、Cocoa標準のクラスでこのジェスチャーをバリバリ使うものが出てきた。これがけっこう鬼門でねぇ。苦しんでる。

たとえば、UIPageViewController。ページ表示を行ってくれる便利クラス。このクラスは、ページめくりっぽい操作を提供するために、タップ、スワイプ、パンに対するUIGestureRecognizerを使っている。このクラスだけを使っているうちは、まぁいいんだけど。

UIGestureRecognzierの便利でありやっかいな点は、ビューの階層構造を無視するところ。UIPageViewContorllerで管理するビューの上に、ボタンを置いたとする。すると、スワイプやパンといったジェスチャーは、ボタンをすり抜けてUIPageViewControllerまで届く。うむ。これは便利だ。しかし、スライダーを置いたときも、同様にすり抜けていく。これにより、スライダーを動かしながらページもめくれてしまう、という事態が発生する。これは困るぜ。

または、ページを表示しているときに、シングルタップでメニューを表示したいとする。ページの左右両端タップではページ移動、それ以外をタップしたときはメニューのトグル、っていう電子書籍アプリによくある操作を実現したい場合ね。この場合、左右両端タップはUIPageViewControllerのジェスチャーが管理する。それ以外のタップは、自前のクラスのジェスチャーで管理する。ということで、2つのジェスチャーの競合を管理しなくてはいけない。めんどくさい。

いまのところきれいな解決策が見当たらないので、ケースバイケースで対応している。これだと、新しいユーザインタフェース追加するたびに、ジェスチャーにすり抜けていかないか、競合しないか、ってことを気にしないといけない。うーん、すっきりしない。

新語大辞泉が辞書カテゴリで1位獲得


先日リリースした「新語大辞泉 壱」が、辞書カテゴリの有料アプリダウンロードランキングで、1位獲得。よしっ。

お、その下にはMapFanも見えるし。

今日の、新語大辞泉より一言。

裏旬

(多く食用魚についていう)世間でいう旬には外れているが、その魚の味がまたよくなる時期。市場への出荷量が多くはないがおいしい時期。春夏の鮎に対する秋の落ち鮎、秋の鮭に対する初夏の時知らずなど。