gpt4 book ai didi

ios - 仅将一些触摸事件从一个 View 传递到另一个 View

转载 作者:行者123 更新时间:2023-11-30 13:04:17 25 4
gpt4 key购买 nike

我正在尝试实现一个可以缩放的 ImageView ,并且文本可以滚动到顶部。在我的 View Controller 中,我有一个包含 ImageView 的 ScrollView ,并设置为缩放,没有任何问题。

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)
}


}

现在我想在顶部放置另一个 ScrollView ,这样文本标签可以在拖动时滚动,但图像在触摸时仍然可以捏合和缩放。我将另一个 ScrollView 放置在图像的顶部(而不是内部),然后将内容 View 和 UILabel 放置在其中,就像我在 IB 中设置 ScrollView 时通常所做的那样。文本当然会滚动,但是图像不会收缩和缩放,除非我使用以下内容子类化内容 View 和顶部 ScrollView :

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
}

enter image description here

这会将触摸传递到下面的 ScrollView 。但是现在我无法滚动文本!有什么方法可以进行设置,以便测试的 UILabel 不通过触摸并可以滚动,但外部确实通过并允许图像缩放?对此的任何指示将不胜感激!

最佳答案

ScrollView 黑客攻击并不总是最直观的过程。但在这种情况下,为什么不让你的 UIViewController 实现 UIScrollViewDelegate 协议(protocol)并使用 UIScrollview 中内置的 zoomFeature

UIScrollView设置minimumZoomScalemaximumZoomScale并使您的 scrollViewDelegate 实现以下函数并返回您想要缩放imageView:

func viewForZooming(in: UIScrollView)

API 引用 - UIScrollView-UIScrollViewDelegate

关于ios - 仅将一些触摸事件从一个 View 传递到另一个 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39569987/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com