我创建了一个customViewController作为customActionsheet。在这个customViewController中,我有一个UIView作为主视图(self.view)和一个IBOutlet UIView,它是自定义操作表(actionSheetView)。我想要做的是让这个自定义操作表像一个常规的动作表,如果你点击黑暗区域,在我的情况下,使用blackColor背景和alpha 5.0的视图。这就是我所拥有的:
UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(slideOut)];
tapGesture.numberOfTapsRequired = 1;
[self.view addGestureRecognizer:tapGesture];
问题在于子视图(自定义操作表视图)也获取了tapgesture,因此在actionSheetView上点击任何内容都会获得点击手势。我尝试了一些诸如- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
和self.actionSheetView.userInteractionEnabled = NO;
之类的内容,但两者似乎都不起作用。任何人都知道如何使self.view可以自我修复,但禁用self.actionSheetView的手势?非常感谢任何提示,指导或帮助。提前谢谢。
答案 0 :(得分:2)
我正在研究这种相同风格的系统。我发现它适用于你:
主要的UIView(self.view)应该是opague,颜色为1的清晰颜色。完整的子视图(参见步骤1)可以是任何颜色(我使用浅灰色),但调整alpha值(0.5为我)。
很遗憾,我无法发布图片,因为我还没有足够的网站代表。
如果您正在使用IB并且无法接收点击,请检查属性检查器(在视图部分下)以确保"用户互动"已启用。
答案 1 :(得分:0)
您需要设置代理
tapGesture.delegate = self.actionSheetView
//actionSheetView.m
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
return NO;
}