顶部检测触摸上的透明uiview



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

  • rootviewController
  • 详细信息ViewController

他们两个都在自己的班级中检测带有手势识别的触摸。

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

因此,当将检测到滑动时,我将启动一个函数否则什么也没有附加,触摸应在低级别视图上传递。

我尝试了这两种解决方案:

  • 在此顶部透明视图上添加exurerocgognizer,但这将使所有触摸都隐藏在较低的层次结构视图中。

另一个解决方案是使像这样的启动

-(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

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

任何人都有一个不错的解决方案?

我不会像您提到的那样创建透明的uiview。我将在UISplitViewController的视图中添加UISwipeGestureRecognizer,这已经是包含您所有子视图的视图。您可以访问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:)];

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

您应该研究Container Controllers。您可以自己制作SplitViewController,并在检测滑动的控制器的顶部进行第三次视图。自定义容器控制器非常简单,并为您提供了很多灵活性。

最新更新