[iOS開発 TIPS] UIGestureRecognizerのロングプレスジェスチャーを1回だけ検知する方法

2012/02/24
CATEGORY : objective-c
このエントリーをはてなブックマークに追加

どうもみなさまこんにちわ。どうやら欲求不満みたいだよ!シブタニエイジです。隙あらば下ネタを投下してやろうと目論んでおります。

で、先日、新アプリ3つと既存アプリ(ヒヨコ、iOkonomiyaki)のアプデ申請を行いました。新アプリって言っても1つはLite版って位置づけなので正確には2つなんですけどね。
んふんふ。

まぁそんな話はおいといて、ただいまノマド作業中なのですがちょいと時間が空いちゃったので、今回のアプリ制作で上がったスキルを惜しみなく公開しちゃう自分忘備録も含めたTIPS紹介いくってばよ〜〜〜〜〜。

 

あら便利。UIGestureRecognizerってやつ

みなさん[UIGestureRecognizer]使ってます?そら使ってますよね。私なんか最近までコレ知らなかったんで、フリックとかの判定は“- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;”使って座標を検出してから判定してたよ。ハハ…。ワラエナイ。

まぁそれはおいといて、知らないよ!詳しく!って方は下記をご覧ください。ひと通りの使い方を丁寧に説明してくださってます。

んで、今回問題なのは一番下の【ロングプレス】の実装ね。これの注意点に、「ロングプレスが認識されたときと指が話されたときに指定のアクションが呼ばれます。」って書かれてて、実際やってみたらどうしても2回アクションが呼ばれんでやんの。バカじゃないの?

ってなもんで、「ロングプレスが認識された時だけ」アクションが呼ばれるように試行錯誤してみましたよっと。

 

こんな感じでなッ!

あ、いつものように説明めんどくさんいでこんな感じね。

- (void)scale1:(UILongPressGestureRecognizer*) sender {
    if([sender state] == UIGestureRecognizerStateBegan){
        // ここはロングプレスが認識された際の処理
    }else if([sender state] == UIGestureRecognizerStateEnded){
        // ここは指を離したときの処理
    }
}

他にもやり方はあるのかな??とりあえず1回のみ実行されるようになったのでよしとするってばよ!

 

今日のひとこと

コメント

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

© 2013 THE AGE