
[英]How to Hide a Child View From Parent View when touch outside of Child View in iOS?
[英]iOS how to ignore parent view receive touch event after child view handle it
请看下面的图片:
我有一个自定义的UIControl
作为RangeSlider
,我按照本教程实现。 我将RangeSlider
放在一个可以滑入或滑出的FilterViewController
中。
在类RangeSlider
我使用了3种UIControl
方法: beginTracking, continueTracking, endTracking
来处理用户移动滑块指示器时的触摸事件。
在类FilterViewController
我使用UIPanGestureRecognizer
来处理用户滑入或滑出时的触摸事件。
问题
当我尝试移动滑块指示器时, ViewController
也会移动。 指标只是移动了一下。 它似乎是子视图和父视图都接收触摸事件。
题
如何忽略父视图( ViewController
)接收触摸事件?
您应该实现PanGestureRecognizer委托的方法
gestureRecognizerShouldBegin(_ :)
编辑:请试试
override func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool {
guard let view = gestureRecognizer.view, view.isKind(of: UIControl.self) else {
return true
}
return false
}
希望这可以帮助。
你可以在viewDidLoad()中写这个。
self.view.isUserInteractionEnabled = false
这应该有助于FilterViewController(假设它是触摸委托)
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
if ([touch.view isDescendantOfView:self.tableView]) {
return NO;
}
return YES;
}
很抱歉,例如在objective-c中,您可以轻松将其转换为swift。 这意味着您使用的表或滚动视图不会对其子视图的触摸作出反应(假设RangeSlider是表视图单元的后代子视图)。 让我知道,如果这没有帮助,我通过几种不同的方式强迫过去的这些问题!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.