ユーザーがタッチすると開き、ユーザーがオプションのいずれかを選択しないと閉じる UIControl のサブクラスとしてメニューを構築しています。
メニューを閉じることができるように、ユーザーが外に触れたときに追跡する方法を探しています
私が本当にやりたいことは、ビュー全体をカバーする大きなボタンを作成し、それをメニューの下に配置することです。または、何かに触れないようにして、何かを起こさせたいと考えています。
UIButton *bigBackButton = [[UIButton alloc]initWithFrame:self.view.frame];
[bigBackButton addTarget:self action:@selector(backButtonSelected) forControlEvents:UIControlEventTouchDown];
[bigBackButton setBackgroundColor:[UIColor colorWithRed:0 green:0 blue:0 alpha:0.5]];
[self.view addSubview:bigBackButton];
}
- (void)backButtonSelected:(UIButton *)button {
//get rid of the button
[button removeFromSuperview];
//do whatever else you need to do
[yourmenu dosomething];
}
一部のアプリでは、ボタンを暗くして半透明にして、メニューを強調表示します。それ以外の場合は、ほとんど見えないようにします。[UIColor colorWithWhite:1.0 alpha:0.01];
メニュー ルーチンにこれらの同じルーチンを追加できます。メニューが UIView のサブクラスである場合は、親ビューのフレームを渡すか、layoutSubviews ルーチンで検索することができます。
あなたのlayoutSubviewsで、これを追加してください:
UIButton *bigBackButton = [[UIButton alloc]initWithFrame:self.superview.frame];
[bigBackButton addTarget:self action:@selector(backButtonSelected) forControlEvents:UIControlEventTouchDown];
[bigBackButton setBackgroundColor:[UIColor colorWithRed:0 green:0 blue:0 alpha:0.5]];
[self.view addSubview:bigBackButton];
そして、メニュー クラスにも backButtonSelected メソッドを配置します。