アプリなどを開発するブログ

React Native / Swift / Ruby on Railsなどの学習メモ。


UIView内に配置したUIButtonが反応しない場合の対処法

xibファイルで

UIViewController |- UIView |- UIButton

みたいな構成を作成したのですが、
プレビューしてもUIButtonがタップに反応しなくて、めちゃはまりました。

このような問題を生まれた手順

  1. iPhone5ディスプレイサイズのxibファイルでUIButtonを配置した
  2. iPhone4ディスプレイサイズのiPhoneシュミレータでプレビューした
  3. 画面サイズが変わるので、オートレイアウト機能が働きUIViewの大きさが変更された
  4. UIViewのサイズが変わった =>どうやらUIView.frameの中に無いUIButtonはタップに反応しないらしい

解決策

  1. xibファイル上でUIViewを選択し、Editorメニュー > Pin > Height を固定
  2. 要らないcontraintsを削除(例えば、上、左右が定義されているなら下のcontraintsは削除)

で、ディスプレイサイズが変わっても、画面内のUIView.frameの大きさが変わらなくなり、
ちゃんと動くようになりました。