2013-04-26 74 views
0

我正在使用KVO來觀察UIScrollViewcontentOffset屬性。當用戶拉動scrollView向下和contentOffset.y == -50.0時,我希望滾動視圖釋放,就好像用戶將他們的手指從屏幕上移開一樣。無論如何要做到這一點?以編程方式取消用戶滾動UIScrollView

回答

0

是的,你可以限制它的偏移量爲-50.0。

- (void) observeValueForKeyPath:(NSString*)keyPath 
         ofObject:(id)object 
         change:(NSDictionary*)change 
         context:(void*)context 
{ 
    //if this is not the only KVO then you should first perform some checks 
    //if the object and keypath are correct 

    //otherwise you can omit the check or modify, if your UIScrollView is subclassed 

    if ([object isKindOfClass:[UIScrollView class]]) 
    { 
     UIScrollView *scrl = (UIScrollView *)object; 

     CGPoint offset = scrl.contentOffset; 

     if (offset.y < -50.0f) 
     { 
      offset.y = -50.0f; 
      scrl.contentOffset = offset; 
     } 
    } 
} 

你可能要考慮在scrollView委託方法(didScroll:和其他移動此代碼。KVO是一個偉大的工具,但它可能是太昂貴對於快速變化的值。

+0

感謝您的答覆,但不幸的是,設置scrollview的contentOffset屬性並不會讓scrollview像用戶放開它一樣行動,我只是試了一下 – 2013-04-26 16:51:35

+1

嗯,也許我明白你的錯誤,所以你希望scrollView繼續滾動,就好像用戶被解除了一樣他的手指?在那種情況下,當'y'達到-50.0時,我會嘗試將'touchesEnabled'設置爲'NO',但是您也可以實現一個委託方法'didEndScrollingAnimation',在那裏你可以重新啓用那個'scrollView'的接觸:我會定義將所有與行爲相關的代碼移動到'delegate'方法,並在這種情況下拋棄KVO。 – 2013-04-26 18:33:09

相關問題