Что мне действительно нравится делать, так это сделать большую кнопку, которая покрывает весь вид, а также под ним или что-то еще, от чего я хочу отвлечься, и что-то случилось.
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];
в вашем меню вы можете добавить эти же подпрограммы. Вы можете передать кадр родительского представления или просто посмотреть его в подпрограмме layoutSubviews, если ваше меню является подкачкой UIView.
в ваших 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 в классе меню, а также.
Хм ... Я не думаю, что это то, что я ищу. Я ищу, чтобы определить, когда пользователь взаимодействует с другими элементами управления. Если я сделаю один размер кадра, он не будет передавать касания. –