顶部检测触摸的透明UIView

时间:2012-10-25 12:38:11

标签: objective-c ios touch uigesturerecognizer transparent

我有一个用UISplitViewController构建的iPad项目:

  • RootViewController的
  • DetailviewController

他们都在自己的班级中使用Gesture Recognizer检测触摸。

我想在所有类之上创建一个透明的 UIView,以便仅检测对角线滑动(从左下角到右上角)。

因此,当检测到滑动时,我将启动一个函数否则不附加任何内容,并且应该在低级别视图上传递触摸。

我试过这两个解决方案:

  • 在此顶部透明视图上添加GestureRecognizer,但这会隐藏所有触摸到较低层次结构视图。(启用userInteraction:YES ofcourse);

另一个解决方案就是像这样生成init

-(id)initWithFrame:(CGRect)frame
{
   self = [super initWithFrame:frame];
  if (self) {
    // Initialization code
    [self setBackgroundColor:[UIColor colorWithWhite:1 alpha:0.01]];
    [self setUserInteractionEnabled:NO];
 }

 return self;

}

并尝试使用

检测滑动
  - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event

但此时未检测到所有触摸。

有人有一个很好的解决方案吗?

3 个答案:

答案 0 :(得分:2)

我不会像你提到的那样创建一个透明的UIView。我将UISwipeGestureRecognizer添加到UISplitViewController的视图中,这已经是包含所有子视图的视图。您可以访问app代理中的视图:

 UISplitViewController *splitViewController = (UISplitViewController *)self.window.rootViewController;

 // attach the swipe gesture to the view that embeds the rootView and the detailView
 UISwipeGestureRecognizer* swipeGesture = [[UISwipeGestureRecognizer alloc] initWithTarget:splitViewController.view action:@selector(swipeUpdated:)];

答案 1 :(得分:1)

您是否只能在UISplitViewController的视图中添加手势识别器?

答案 2 :(得分:0)

您应该查看Container Controllers。您可以创建自己的SplitViewController,并在检测到滑动的控制器顶部创建第三个视图。自定义容器控制器非常简单,为您提供了很大的灵活性。