只传递一些触摸事件从一个视图到另一个视图
问题描述:
我试图实现一个图像视图,该图像视图可以放大并且还有文字滚动到顶部。在我的视图控制器中,我有一个包含图像视图的滚动视图,并设置为放大而没有问题。只传递一些触摸事件从一个视图到另一个视图
class ViewController: UIViewController, UIScrollViewDelegate {
@IBOutlet weak var imageView: UIImageView!
@IBOutlet weak var scrollView: UIScrollView!
//First try getting the image setup correctly
override func viewDidLoad() {
super.viewDidLoad()
setupImageView()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
func setupImageView() {
scrollView.contentSize = imageView.bounds.size
scrollView.minimumZoomScale = 0.5
scrollView.maximumZoomScale = 2.0
}
func viewForZoomingInScrollView(scrollView: UIScrollView) -> UIView? {
return imageView
}
func scrollViewDidZoom(scrollView: UIScrollView) {
let imageViewSize = imageView.frame.size
let scrollViewSize = scrollView.bounds.size
let verticalPadding = imageViewSize.height < scrollViewSize.height ? (scrollViewSize.height - imageViewSize.height)/2 : 0
let horizontalPadding = imageViewSize.width < scrollViewSize.width ? (scrollViewSize.width - imageViewSize.width)/2 : 0
scrollView.contentInset = UIEdgeInsets(top: verticalPadding, left: horizontalPadding, bottom: verticalPadding, right: horizontalPadding)
}
}
现在我想将另一个滚动视图的顶部,这样的文字标签可以,如果一拖再拖滚动,但图像仍然可以捏和缩放当它被触及。我将另一个滚动视图放在图像顶部(不在里面),然后在内部放置一个内容视图和UILabel
,正如我在IB中设置滚动视图时通常所做的那样。
override func pointInside(point: CGPoint, withEvent event: UIEvent?) -> Bool {
for subview in subviews as [UIView] {
if !subview.hidden && subview.alpha > 0 && subview.userInteractionEnabled && subview.pointInside(convertPoint(point, toView: subview), withEvent: event) {
return true
}
}
return false
}
这传递触摸到下面的滚动型:当然卷轴但是图像不会捏和缩放,除非我两个子类的内容视图顶部滚动视图与文本。但是现在我无法滚动文本!有没有什么办法可以设置这个,所以测试的UILabel
没有通过触摸,可以滚动,但外部通过并允许图像缩放?任何指针都会非常感谢!
答
ScrollView
黑客攻击并不总是最直观的过程。但是在这种情况下,为什么不让你的UIViewController
执行UIScrollViewDelegate
协议并使用内置的zoomFeature
中的UIScrollview
?
设置minimumZoomScale
和maximumZoomScale
为UIScrollView
,让您的scrollViewDelegate
实现以下功能并返回imageView
要zoom
:
API参考 - UIScrollView - UIScrollViewDelegate
我使用内置缩放图像的第一个滚动视图。对于我想要滚动的文本,图像顶部有第二个滚动视图。我想传递触摸,以便缩放下方的滚动视图,但在触摸文本时不会传递它们,因此文本可以滚动。 – Kex