Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/106.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
视图中嵌套的iOS按钮未接收触摸_Ios_Button_View_Gesture - Fatal编程技术网

视图中嵌套的iOS按钮未接收触摸

视图中嵌套的iOS按钮未接收触摸,ios,button,view,gesture,Ios,Button,View,Gesture,我有一个包含滚动视图的视图控制器,它占据了整个可用窗口。我使用一个UIView作为容器视图,它是scrollview的子视图,包含所有其他视图和控件。初始化视图控制器时,根据web服务中的数据,会有很多配置,例如显示哪些视图和控件 连接到视图控制器主视图的是轻触手势识别器。我发现我需要检查[touch view],看看它是否是一个按钮或任何其他我不想让手势识别器解释的控件,并将一个NO值从 (BOOL)手势识别器:(UIGestureRecognitor*)手势识别器应接受触摸:(UITouc

我有一个包含滚动视图的视图控制器,它占据了整个可用窗口。我使用一个UIView作为容器视图,它是scrollview的子视图,包含所有其他视图和控件。初始化视图控制器时,根据web服务中的数据,会有很多配置,例如显示哪些视图和控件

连接到视图控制器主视图的是轻触手势识别器。我发现我需要检查[touch view],看看它是否是一个按钮或任何其他我不想让手势识别器解释的控件,并将一个NO值从

  • (BOOL)手势识别器:(UIGestureRecognitor*)手势识别器应接受触摸:(UITouch*)触摸
委托方法(如果它是这些控件之一)

所以在这个容器视图中是另一个(UIView)子视图,在该子视图中是一个按钮。视图控制器是导航控制器堆栈的一部分,当它仅作为导航控制器呈现时,所有这些都可以正常工作

当导航控制器从选项卡栏的一个选项卡显示时,当我点击按钮时,它无法识别该按钮上的点击。当我打断上面的委托方法时,[触摸视图]是UIView,而不是UIButton

如果我点击并按住按钮一秒钟左右,它就会识别该按钮,并将消息转发给该按钮


有什么想法吗?我可以发布代码,只是还不确定发布什么…

可能按钮超出了其包含视图的范围?如果未设置clipsToBounds,该按钮仍将显示,但由于它不在其superview的范围内,因此不会对触摸做出响应

另一种可能是另一个视图与按钮重叠。如果重叠视图具有透明背景,您将无法看到其重叠的位置,但它可能会从其下方的视图中窃取触摸事件


每当我有很多嵌套视图时,我发现最简单的方法就是(暂时)将每个视图的背景色设置为不同的颜色。这样,我就可以准确地看到每个视图的边界在哪里,它们是如何嵌套的,以及哪些内容与哪些内容重叠。

可能按钮在其包含视图的边界之外?如果未设置clipsToBounds,该按钮仍将显示,但由于它不在其superview的范围内,因此不会对触摸做出响应

另一种可能是另一个视图与按钮重叠。如果重叠视图具有透明背景,您将无法看到其重叠的位置,但它可能会从其下方的视图中窃取触摸事件


每当我有很多嵌套视图时,我发现最简单的方法就是(暂时)将每个视图的背景色设置为不同的颜色。这样,我就可以准确地看到每个视图的边界在哪里,它们是如何嵌套的,以及什么重叠了什么。

找到了它。容器视图设置了“灵活高度自动调整大小”遮罩,因此由于选项卡栏,被设置为较小的高度。找到它了。容器视图设置了灵活的高度自动调整掩码,因此由于选项卡栏的缘故,它被设置为更小的高度。谢谢兄弟。从2小时起就开始抓狂。我完全忘了那件事是的,在我的案例中,这是第一个案例。谢谢兄弟。从2小时起就开始抓狂。我完全忘了那件事是的,这是金子做的