PIYO - Tech & Life -

ボタン以外(UILabelとか)をタップしたいなら透明ボタンがいいかも

iOS開発でボタン以外の要素をタップさせたくなることがたまにあるかもしれない。例えばラベルとか画像とかね。

そういった場合によく取られる方法はもしかしたらtouchesBegantouchesEndedのイベントを使うことかもしれない。けれど、タッチ系のイベントで自分で何とかしようとするとタップしたあと領域外で離したときとかその逆の動きとかで微妙に挙動がうまくいかないので操作感も悪くなってしまう。

やはりボタン系の操作はUIButtonが最強なのでここはUIButtonを透明にしてしまって、触らせたい要素の上におけばいいじゃないか。

例えばUIImageViewをタップさせたいならこういう↓ふうにまったく同じ大きさのボタンを作って、ボタンの文字をなくして背景色を透明にしてしまう(デフォルト透明)。

ボタンのほうが上にある感じ。

あとは普通にUIButtonのTouchUpInsideを受け取ればOK。あたかも画像をタップしているようにみえる。