按下按钮(子视图)时不要在超级视图上处理平移手势
Posted
技术标签:
【中文标题】按下按钮(子视图)时不要在超级视图上处理平移手势【英文标题】:Don't handle pan gesture on superview when touchdown button (subview) 【发布时间】:2016-04-26 09:38:10 【问题描述】:我有一个可以通过平移手势移动的视图(超级视图),该视图具有带有 TouchDown 事件的子视图(UIButton)。但是当我按下按钮(已处理触地事件)并继续移动手指时,我的超级视图开始处理平移手势方法。 当我触摸它的子视图时如何禁用处理超级视图的平移手势方法?
【问题讨论】:
【参考方案1】:要禁用 UIView 的子视图上的触摸事件,您可以将此扩展添加到 UIViewController
:
extension UIViewController:UIGestureRecognizerDelegate
func hideKeyboardWhenTappedAround()
let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(UIViewController.dismissKeyboard))
view.addGestureRecognizer(tap)
tap.delegate = self
func dismissKeyboard()
view.endEditing(true)
public func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldReceiveTouch touch: UITouch) -> Bool
if (touch.view!.isDescendantOfView(self.view) && touch.view != self.view)
return false
return true
【讨论】:
以上是关于按下按钮(子视图)时不要在超级视图上处理平移手势的主要内容,如果未能解决你的问题,请参考以下文章