【发布时间】:2014-05-14 03:42:10
【问题描述】:
我的情况比列出的其他人要复杂一些。
我有一个占据大部分屏幕的 UITableView。 每行都会弹出一个包含更多配置文件信息的子视图。再次单击屏幕时,此子视图消失。这非常有效。
在导航栏中,我有一个按钮,它将显示一个小菜单。
- (IBAction)menuButtonClicked:(UIBarButtonItem *)sender {
//If menuView exists and Menu button is clicked, remove it from view
if (self.menuView) {
self.tableView.userInteractionEnabled = true;
[self.menuView removeFromSuperview];
self.menuView = Nil;
}
//Menu View doesn't exist so create it
else {
// Create the Menu View and add it to the parent view
self.menuView = [[[NSBundle mainBundle] loadNibNamed:@"MenuView" owner:self
options:nil] objectAtIndex:0];
self.menuView.layer.cornerRadius = 20.0f;
self.menuView.layer.borderWidth = 3.0f;
self.menuView.layer.borderColor = [UIColor whiteColor].CGColor;
self.menuView.frame = CGRectMake(0, 64, self.menuView.frame.size.width,
self.menuView.frame.size.height);
UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc]
initWithTarget:self action:@selector(singleTapGestureCaptured:)];
[self.menuView addGestureRecognizer:singleTap];
//Disable Selection of Profiles while Menu is showing
self.tableView.userInteractionEnabled = false;
//Add MenuView to View
[self.view addSubview: self.menuView];
}
}
//Removed Sub Views from View when tapped
-(void)singleTapGestureCaptured:(UITapGestureRecognizer *)gesture{
if(self.profileView){
[self.profileView removeFromSuperview];
self.profileView = Nil;
}
if(self.menuView) {
self.tableView.userInteractionEnabled = true;
[self.menuView removeFromSuperview];
self.menuView = Nil;
}
}
现在我想在再次单击菜单按钮时关闭此菜单(在上面的代码中工作)以及当用户触摸菜单并在 tableView 或导航栏上时。如果显示菜单,我不希望 tableView 显示它的配置文件子视图(在上面的代码中工作),而只是删除 menuView。如果我触摸 tableView,我无法让 menuView 消失。
谁能指出我正确的方向?
【问题讨论】:
-
听起来你几乎想要一个弹出框。你能发布一个草图来展示你想要的行为吗?
-
我已经得到了一个“弹出框”,但它是一个使用 NIB 子视图的 menuView。当用户触摸它之外时,我想删除子视图。
标签: objective-c uitableview uiview uinavigationbar