UIGestureRecognizerが使えない時の対処法

2016.11.12
UIGestureの注意点の記事のアイキャッチ

こんにちは、プログラマーの@Yuuです。

UIGestrueRecognizerを使えばタップ、ピンチイン・ピンチアウト、ドラッグなど様々なジェスチャーを扱う事が出来るようになります。
そんな便利なUIGestrueRecognizerですが「使えない・動かない」みたいな事がありませんか?

僕はしょっちゅう「動かないー!(;゚д゚)」と慌てています。
その解決方法が分かったので、備考録も兼ねて記事にします。

スポンサーリンク

UIGestrueRecognizerが動かない時の対処法

UILabelやUIImageViewには「UserInteractionEnabled」というプロパティを持っています。
このプロパティはUIViewが持っているプロパティで、UILabelやUIImageViewはそれを継承しているわけですね。

UserInteractionEnabledは「タッチの検知をするかしないかの設定」を行えるプロパティです。
そのため、このUserInteractionEnabledがONになっていないと、UIGestrueRecognizerを設定してもタップが検出出来ません

Swiftでタップを検知出来るようにする

コードベースでUserInteractionEnabledをONにする場合は以下のように書きます。

この例ではmyLabelというUILabelのUserInteractionEnabledを設定しています。
肝心のUserInteractionEnabledを設定している部分は11行目になります。

この部分でfalseを設定するとmyLabelをタップしても反応しなくなるので、もし良ければ試してみて下さい。

storyboardでタップを検知出来るようにする

もしstoryboardを使って開発を行う場合はこちらの方法が簡単です。
何故なら対象のオブジェクトの「User Interaction Enabled」というチェックボックスをONにすればいいだけだから!


1箇所にチェックマークを付けるだけ!

これだけでOK!
簡単!(๑•̀ㅂ•́)و✧

あとがき

何かと使う機会が多いUIGestrueRecognizerですがこの設定がOFFになっているだけで動きません。

しかもUIViewはstoryboardに配置しただけでUserInteractionEnabledがONになっているのに、UILabelやUIImageViewは配置しただけだとUserInteractionEnabledがOFFになってるから同じノリでやると「動かない・・( º﹃º )」てなるという。。クセモノです。

ではでは
今回はこの辺で!ヽ(•̀ω•́ )ゝ✧

UIGestureの注意点の記事のアイキャッチ

この記事が気に入ったらいいね!
して最新情報をチェックしよう!

スポンサーリンク