2012-07-16 63 views
1

一般來說: 我得到了一個自定義的UIView,其中一個xib文件作爲UIViewController的子視圖。我在我的控制器中以編程方式添加子視圖。更改自定義UIView到UIScrollView

在我的UIViewController:

NSArray *subviewArray = [[NSBundle mainBundle] loadNibNamed:@"MyCustomSubView" owner:self options:nil]; 
mySubView = [subviewArray objectAtIndex:0]; 
... 
[self.view addSubview:mapView]; 

,因爲我需要滾動此子視圖,這也有它的的UIImageView,我決定改變我的自定義的UIView到UIScrollView的。

我做了如下步驟:

  • 改變了MyCustomSubView.xib,加入自定義類MyCustomSubView一個的UIScrollView(和之前一樣就可以了的UIImageView)
  • 改變了我的MyCustomSubView類繼承的UIScrollView
  • 更改MyViewController以實現UIScrollViewDelegate
  • 將mySubView.delegate設置爲self(控制器)
  • 實施(UIView *)viewForZoomin gInScrollView:(UIScrollView的*)滾動視圖,並返回子視圖的的UIImageView上的ImageView並在UIScrollView的

這些都是我的總的步驟,我認爲

  • 啓用用戶交互。但是作爲例子,viewForZoomingInScrollView方法沒有被調用。此外我試圖放大,但沒有發生。

    任何一個想法,有什麼可能是錯的?

  • 回答

    2

    UIScrollView Class Reference page簡要地看,我看到以下內容:

    的UIScrollView的類可以有必須採取UIScrollViewDelegate協議的委託。爲了縮放和平移工作,委託必須實現viewForZoomingInScrollView:和scrollViewDidEndZooming:withView:atScale:;此外,最大值(maximumZoomScale)和最小值(minimumZoomScale)縮放比例必須不同。

    你提到實施viewForZoomingInScrollView:,但不scrollViewDidEndZooming:atScale:,也沒有你提到的設置maximumZoomScaleminimumZoomScale。嘗試做這些事情,並檢查你是否仍然有問題。

    +0

    非常感謝。我之前閱讀過類的參考資料,但在回答之後,我再次查看了我的代碼,現在立即發現有點失敗,因爲我實現了scrollViewDidEndZooming錯誤。很難,我花了1小時,並在你回答我剛剛1分鐘。謝謝! – NDY 2012-07-16 17:12:46

    +0

    發生在我們身上。很高興我能幫上忙。 – ravron 2012-07-16 17:16:59