2016-09-19 126 views
0

我試圖實現一個圖像視圖,該圖像視圖可以放大並且還有文字滾動到頂部。在我的視圖控制器中,我有一個包含圖像視圖的滾動視圖,並設置爲放大而沒有問題。只傳遞一些觸摸事件從一個視圖到另一個視圖

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沒有通過觸摸,可以滾動,但外部通過並允許圖像縮放?任何指針都會非常感謝!

回答

0

ScrollView黑客攻擊並不總是最直觀的過程。但是在這種情況下,爲什麼不讓你的UIViewController執行UIScrollViewDelegate協議並使用內置的zoomFeature中的UIScrollview

設置minimumZoomScalemaximumZoomScaleUIScrollView ,讓您的scrollViewDelegate實現以下功能並返回imageViewzoom

API參考 - UIScrollView - UIScrollViewDelegate

+0

我使用內置縮放圖像的第一個滾動視圖。對於我想要滾動的文本,圖像頂部有第二個滾動視圖。我想傳遞觸摸,以便縮放下方的滾動視圖,但在觸摸文本時不會傳遞它們,因此文本可以滾動。 – Kex

相關問題