3

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

  • 根视图控制器
  • 细节视图控制器

他们都在自己的类中使用手势识别器检测触摸。

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

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

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

  • 在这个顶部透明视图上添加一个 GestureRecognizer 但这将隐藏对较低层次视图的所有触摸。(启用 userInteraction:当然是);

另一种解决方案是使 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

但是此时所有的触摸都没有被检测到。

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

4

3 回答 3

2

我不会像你提到的那样创建一个透明的 UIView。我将在视图中添加一个UISwipeGestureRecognizerUISplitViewController这已经是包含所有子视图的视图。您可以访问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:)];
于 2012-10-25T12:50:16.403 回答
1

你不能在UISplitViewController视图中添加一个手势识别器吗?

于 2012-10-25T12:48:28.743 回答
0

You should look into Container Controllers. You can make your own SplitViewController and make a third view on top of the controller that detects the swipe. Custom container controllers are pretty straight forward and gives you a lot of flexibility.

于 2012-10-25T13:27:58.130 回答