我正在尝试关闭弹出菜单,如果用户在弹出窗口的范围内选择了除外。换句话说,他们选择背景,弹出窗口关闭。
我目前有一个RootViewController,可以加载带有一堆其他UI元素的UIView。 有一次,弹出一个弹出(自定义)菜单 - 这是一个单独的UIViewController与相关的.xib。它通过以下方式加载到屏幕上:
SectionsChooserViewController *cv = [[SectionsChooserViewController alloc] initWithNibName:@"SectionsChooserViewController" bundle:[NSBundle mainBundle]];
cv.view.frame = CGRectMake(584, 391, 314, 346);
cv.delegate = self;
此视图仅占据屏幕的一小部分。因此,如果您在视图上,则为此视图添加的触摸检测代码将仅注册回调。
如果我没有处理“SectionsChooserViewController”中的触摸,而是在rootViewController中实现touchesBegan(加载“SectionsChooser ...”),则不会调用90%的视图,因为UIScrollView是我似乎记录了触摸而不是传递它。
有没有办法让UIScrollView传递触摸事件?
编辑:至少我认为 UIScrollView正在接受触摸事件。我不确定 - 我在页面上有近20个UI控件。
编辑:好的,这是UIScrollView。如果我关闭两个scrollView上的交互启用,UIView将获得触摸,但这会打破UIScrollViews - 所以这将无法工作。
答案 0 :(得分:0)
您可以使用[super touchesBegan:withEvent:]
来帮助解决问题。
根据您尝试的操作,您可以使用UIGestureRecognizer
捕获触摸事件。
UITapGestureRecognizer *doubleTapGestureRecognizer = [[UITapGestureRecognizer alloc]
initWithTarget:self action:@selector(handleDoubleTap:)];
doubleTapGestureRecognizer.numberOfTapsRequired = 2; //change value to 1 for single taps
[self addGestureRecognizer:doubleTapGestureRecognizer];