触摸时删除叠加视图

时间:2011-07-04 16:58:45

标签: iphone uiview objective-c++

我将UIview定义为叠加视图:

self.disableViewOverlay = [[UIView alloc] initWithFrame:CGRectMake(0.0f,44.0f,320.0f,416.0f)];
self.disableViewOverlay.backgroundColor=[UIColor blackColor];
self.disableViewOverlay.alpha = 0;

现在我想禁用叠加视图,如果用户点击它...

[disableViewOverlay removeFromSuperview];

如何确定用户是否点按此叠加层视图?有一个“轻敲”的方法,就像一个按钮有一个IBAction?

谢谢!

1 个答案:

答案 0 :(得分:3)

您有两种选择:

  1. 覆盖hitTest;

  2. 中的UIView
  3. 覆盖touchesBegan:withEvent:touchesMoved:withEvent:touchesEnded:withEvent:以获得更好的控制权。

  4. 这两种方法都要求您继承UIView(您要检测点按的那个)。

    分别查看UIView Class ReferenceUIResponder Class Reference

    如果您不想继承UIView,则另一个选项是将其附加到UITapGestureRecognizer

     gestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTapOnView)];
     [self.disableViewOverlay addGestureRecognizer:gestureRecognizer];
    

    然后您将在handleTapOnView功能中禁用叠加层。 手势识别器仅在iOS 3.2上可用。

    请检查:UITapGestureRecognizer Class Reference