objective-c - 检测触摸另一个 View 后面的 View ?

标签 objective-c

我有两种看法

  • 顶 View 有一些不透明区域和一些透明区域
  • 底部 View 有一些可点击的按钮。

顶 View 完全覆盖了底 View ,但是由于顶 View 有透明区域,所以仍然可以看到底 View 。

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

有没有办法让顶 View 将触摸传递给底 View ?

最佳答案

我自己的问题的解决方案,希望它能帮助别人。

在前 View 中,监听 touchesEnded:withEvent 委托(delegate)。

当此委托(delegate)触发时,您知道用户正在触摸前 View 。

接下来您需要检查手指位置是否接触到 BOTTOM View 中的特殊区域。

要做的是:

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

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

2)在下 View 中

- (BOOL) isFingerOnYourButton:(CGPoint)point
{
 return CGRectContainsPoint(self.aButton.frame, point);
}  

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

关于objective-c - 检测触摸另一个 View 后面的 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6911721/

相关文章:

ios - 泄漏从未出现在 Xcode 6.1.1 Instruments 工具中

objective-c - 确保单元格中的内容不会被错误地重复使用的最有效方法是什么

ios - 从单独的类推送新的 UIViewController

iphone - 更改特定行颜色 uipicker

ios - iOS 中的图像识别

objective-c - 检查文件大小是否发生变化

objective-c - 将 iOS 版本添加到 Mac 应用程序

objective-c - 延迟动画开始后,UIButton 上的触摸事件停止

iphone - 从任何文件访问变量

ios - Cocos2d - 第一个 CCAction 不显示变化