如何在iOS中的子视图外部触摸时从父视图隐藏子视图?

时间:2015-02-13 06:09:33

标签: ios objective-c uiview

我是iOS中的新手我制作了一个应用程序,其中包含我想要按下按钮然后弹出子视图的两个视图所以为此我写了一个像我这样的鳕鱼

-(IBAction)mapButtonPressed:(id)sender
 {
self.mapTypeVIew.hidden=FALSE;
 }

并在我的viewDidLoad方法中写为

[self.mkMapView addSubview:self.mapTypeVIew];
self.mapTypeVIew.hidden=TRUE;

所以它隐藏在viewDidLoad方法上并且仅在按下按钮时显示但在这里我想按下按钮并且也显示了子视图但我想如果用户触摸子视图之外那么子视图也隐藏为那个我写一个像鳕鱼一样的鳕鱼

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event  {
NSLog(@"touches began");
UITouch *touch = [touches anyObject];
if(![touch.view isKindOfClass:[self.mapTypeVIew class]])
{
    self.mapTypeVIew.hidden=TRUE;
}
}

但它不是隐藏请给我解决方案,当用户触摸Child视图之外,然后它是隐藏。

感谢。

2 个答案:

答案 0 :(得分:1)

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event  {
   NSLog(@"touches began");
   UITouch *touch = [touches anyObject];
   if(![touch.view isKindOfClass:[self.mapTypeVIew class]])
   {
      self.mapTypeVIew.hidden = YES;
      self.mapTypeVIew.alpha = 0.0;
   }
}

并在展示时,

-(IBAction)mapButtonPressed:(id)sender
 {
    self.mapTypeVIew.hidden = NO;
    self.mapTypeVIew.alpha = 1.0;
 }

答案 1 :(得分:0)

这不是隐藏UIView的有效方法。你可以添加SubView& RemoveFromSuperView是最佳方式。

将其添加到超级视图

[self.mkMapView addSubview:self.mapTypeVIew];

从SuperView

中删除它
[self.mapTypeVIew removeFromSuperview];