检测另一个视图后面的视图上的触摸?

mkt*_*kto 6 objective-c

我有两个观点

  • 顶视图有一些不透明区域和一些透明区域
  • 底部视图有一些可点击的按钮.

顶视图完全覆盖底部视图,但由于顶视图具有透明区域,因此仍可以看到底视图.

但是,由于topview阻止它,我无法再检测到底部视图上的按钮点击,我该怎么办?

无论如何让顶视图将触摸传递到底部视图?

mkt*_*kto 4

我自己的问题的解决方案,希望对某人有所帮助。

在前视图中,聆听touchesEnded:withEvent代表的声音。

当此委托触发时,您就知道用户正在触摸前视图。

接下来需要检查手指位置是否触及底部视图中的特殊区域。

要做的是:

1)将点转换为相对于底视图:

UITouch *touch = [touches anyObject];
CGPoint touchPointInLowerView = [touch locationInView:self.lowerViewController.view];
BOOL isLowerButtonClicked = [self.lowerViewController isFingerOnYourButton:touchPointInLowerView];
if(isLowerButtonClicked)
{
 // lower button clicked
}
Run Code Online (Sandbox Code Playgroud)

2) 在下视图中

- (BOOL) isFingerOnYourButton:(CGPoint)point
{
 return CGRectContainsPoint(self.aButton.frame, point);
}  
Run Code Online (Sandbox Code Playgroud)

瞧。通过这种方式,我们可以检测底部视图中的点击,即使它被顶部的另一个交互式视图阻挡。