我的UIPageViewController上有一些UIButton用于翻页。
如果当我的初始触摸落在按钮之一上时尝试通过滑动来切换页面,则该按钮会阻止滚动视图接收手势,从而实质上阻止了页面滚动。
无论如何,是否可以轻按按钮,但如果滑动视图也可以滚动滚动视图?
谢谢!
答案 0 :(得分:0)
如何使用视图或图像然后使用点击手势识别器进行设置?
答案 1 :(得分:0)
这可能对您有用...
PassTouchScrollView
这里是一个例子。照常设置滚动视图及其内容子视图。将按钮添加为子视图,并将其限制在滚动视图的顶部(而不是其最近的邻居)。将滚动视图的类设置为PassTouchScrollView
,然后通过@IBOutlet
进行连接。通过@IBOutlet
连接顶部约束。最后,将按钮的touchUpInside连接到@IBAction
。
class PassTouchScrollView: UIScrollView {
override func touchesShouldCancel(in view: UIView) -> Bool {
if type(of: view) == UIButton.self {
return true
}
return super.touchesShouldCancel(in: view)
}
}
class PassThroughTestViewController: UIViewController, UIScrollViewDelegate {
@IBOutlet var theScrollView: PassTouchScrollView!
// constraint from top of button to top of scroll view
@IBOutlet var theButtonTopConstraint: NSLayoutConstraint!
var origTop: CGFloat = CGFloat(0)
override func viewDidLoad() {
super.viewDidLoad()
theScrollView.delegate = self
// save the original top constraint constant
origTop = theButtonTopConstraint.constant
}
func scrollViewDidScroll(_ scrollView: UIScrollView) {
// when scrolling, update the top constraint to keep the button in-place
theButtonTopConstraint.constant = origTop + scrollView.contentOffset.y
}
@IBAction func didTap(_ sender: Any) {
print("tapped")
}
}