社畜系WEBエンジニアの消耗戦

読者です 読者をやめる 読者になる 読者になる

社畜系WEBエンジニアの消耗戦

修羅の国でせっせと働く社畜系WEBエンジニアのブログ

UIImageとかUILabelにタップイベントを追加する(正確にはUIButtonで)

画像押したら遷移させたいとか、ラベル押したら遷移させたいとか、要はUIButton以外のものにタップイベントつけたいことってあるじゃないですか。ありますよね?僕はありました。

タップイベントを追加できるのか?

出来ることは出来る。ググるtouchesBeganとかtouchesEndedとかをいい感じに使えば出来るようだ。でも、なんか面倒くさい。し、何も考えないでやると、検知タイミングとかの問題で、よくある押したら◯◯みたいな挙動が少しおかしくなりそうな感じだった。

出来る、けど面倒くさい。さあどうする。

UIButtonを上にかぶせる

これが一番単純。

CCS3が出て来る前の貧弱な表現しか出来なかった時代は、よくHTMLなんかでやったよね。要素の上に透明の要素をかぶせるあれ。

今回も、UILabelの上に透明のUIButtonをかぶせればいい。

具体的にどうするのか

実際にやることはこんな感じになる。

  • storyboardUIButtonを配置
  • Constraintsで下のUILabelと同じ大きさに指定する
  • 背景を透明にする(デフォルト透明)
  • UIButtonの文字列を消す
  • IBActionで繋いで処理を書く

コードはこんな風になる。処理を書く以外の部分はGUIで設定できる。

@IBAction func hogehoge(sender: UIButton) {
    log.debug("clicked")

    // 以下実行したい処理
}

GUI嫌いって思ってたけど、最近GUIの方が簡単に実装できるような気がしてきている。

Swift本欲しい。