LoginSignup
16
15

More than 5 years have passed since last update.

ぶつからないびゅー

Posted at

ぶつからない?

もちろん、指が自動停止するわけではありません(^^)

画面全体を覆う透明なビューを作成し、そこにボタン等を配置したい場合があります。このような場合、透明ビューのタッチ判定をなくす必要があります。

userInteractionEnabledをNOにすればタッチを無効にできますが、サブビューでタッチを処理できなくなります。そこで、userInteractionEnabledはYESのままにして、hitTestを上書きすることで、親ビューへのタッチを無視しつつ、サブビューへのタッチを処理する事ができます。

- (UIView*)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
    UIView *hitView = [super hitTest:point withEvent:event];
    if (self == hitView) {
        return nil;
    }
    return hitView;
}

どんな時に使うのか?

何かをフロート表示したい時に直接keyWindowにアクセスせずに、このようなフルスクリーンViewを挟んでおくと非常に楽になります。iOS7,ioS8の回転処理に対する対応も、フルスクリーンViewの中で一元処理できます。

さらに言うと、Status barを含むバージョン、含まないバージョンの両方を用意しておくと、非常に捗ります。これはPoin 1.9系に導入するテクニックです。

おっと、現実逃避はやめてコードを書く時間だ。。。

16
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
15