2016-09-19 8 views
0

私はズームが可能で、テキストを上にスクロールできるイメージビューを実装しようとしています。私のビューコントローラでは、私は画像ビューを含むスクロールビューを持っており、問題なくズームするように設定されています。1つのビューから別のビューにいくつかのタッチイベントだけを渡す

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


} 

は、今私は上のドラッグした場合は、テキストラベルをスクロールすることができますが、それは上のタッチしたときの画像がまだ挟まおよびズームすることができますので、上に別のスクロールビューを配置します。私は、IBのスクロールビューを設定するときに通常行うように、画像1の上に別のスクロールビューを配置し(内部ではなく)、コンテンツビューとUILabelを配置しました。画像はピンチやズームではないだろうが、私はとコンテンツビューとトップ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 
    } 

​​

これは、以下のscrollviewにタッチを渡します。しかし、今私はテキストをスクロールすることはできません!これを設定する方法はありますか?UILabelのテストではタッチが通過せず、スクロールできますが、外側は通過して画像を拡大できますか?これについての指針は本当に感謝しています!

答えて

0

ScrollViewハッキングは、常に最も直感的な処理ではありません。しかし、この場合、UIViewControllerUIScrollViewDelegateプロトコルを実装し、zoomFeatureに組み込まれたUIScrollviewを使用してみましょう。

設定minimumZoomScaleUIScrollView ためmaximumZoomScaleと作るあなたのscrollViewDelegate次の関数を実装し、返すimageViewあなたはzoomしたい:

APIリファレンス - UIScrollView - 私はUIScrollViewDelegate

+0

を画像の最初のスクロールビューに組み込まれたズームを使用します。スクロールしたいテキストの画像の上に2番目のスクロールビューがあります。タッチを渡して、下のスクロールビューをズームできますが、テキストがタッチされたときにスクロールビューを渡すことはできないため、テキストをスクロールすることができます。 – Kex

関連する問題