ios - 在 CustomView 中点击手势识别器查看而不是 subview

标签 ios objective-c uiview uitapgesturerecognizer

我创建了一个 customViewController 作为 customActionsheet。在这个 customViewController 中,我有一个 UIView 作为主视图 (self.view) 和一个作为自定义操作表 (actionSheetView) 的 IBOutlet UIView。我想要做的是让这个自定义操作表像一个常规操作表一样工作,如果你点击黑暗区域,在我的例子中是带有 blackColor 背景和 alpha 5.0 的 View 。这是我的:

UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(slideOut)];
tapGesture.numberOfTapsRequired = 1;
[self.view addGestureRecognizer:tapGesture];

问题在于, subview (自定义操作 TableView )也会获取点击手势,因此点击 actionSheetView 上的任何内容都会获取点击手势。我已经尝试了一些东西,比如 - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touchself.actionSheetView.userInteractionEnabled = NO; 但两者似乎不起作用。任何人都知道如何使 self.view 可点击但为 self.actionSheetView 禁用该手势?非常感谢任何提示、指导或帮助。提前致谢。

最佳答案

我正在研究这种相同风格的系统。如果您满足以下条件,我发现它有效:

  1. 添加一个新的 UIView 作为主 UIView 的 subview 。
  2. 在您想要自定义 UI 的地方创建另一个 UIView(可以是像操作表、选择器等一样的表格)。确保它显示在步骤 1 中的 UIView 上方。
  3. 在第 1 步中的 UIView 上注册 UITapGestureRecognizer。
  4. (可选)添加额外的按钮(例如“取消”和“完成”)并设置您的自定义 Controller 触发的委托(delegate)。

主 UIView (self.view) 应该是不透明的,清晰的颜色,alpha 为 1。完整的 subview (见步骤 1)可以是任何颜色(我使用浅灰色),但调整 alpha 值(0.5 为我)。

很遗憾,我无法发布图片,因为我在网站上的代表还不够多。

如果您使用 IB 并且在接收点击时遇到问题,请检查属性检查器(在 View 部分下)以确保启用“用户交互”。

关于ios - 在 CustomView 中点击手势识别器查看而不是 subview ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20360373/

相关文章:

ios - 如何绘制一个点(Swift)

iphone - iPhone 上的 ARP 请求

objective-c - iOS 无法识别的选择器发送到实例 0x45e8

objective-c - NSString stringWithFormat - 尝试将标签设置为两位数字的一位数字

objective-c - 将触摸区域添加到 UIView (iOS5)

iphone - 计算一个单词中的相同字母

objective-c - 如何在不使用 ASIHTTPRequest 的情况下上传多张图片

ios - 为 NSNotificationCenter 添加乘法观察者

ios - 选择器 View 的行为

ios - 无法在 Interface Builder (Xcode 5) 中创建与 subview 的导出连接