0
我正在使用KVO
來觀察UIScrollView
的contentOffset
屬性。當用戶拉動scrollView
向下和contentOffset.y == -50.0
時,我希望滾動視圖釋放,就好像用戶將他們的手指從屏幕上移開一樣。無論如何要做到這一點?以編程方式取消用戶滾動UIScrollView
我正在使用KVO
來觀察UIScrollView
的contentOffset
屬性。當用戶拉動scrollView
向下和contentOffset.y == -50.0
時,我希望滾動視圖釋放,就好像用戶將他們的手指從屏幕上移開一樣。無論如何要做到這一點?以編程方式取消用戶滾動UIScrollView
是的,你可以限制它的偏移量爲-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是一個偉大的工具,但它可能是太昂貴對於快速變化的值。
感謝您的答覆,但不幸的是,設置scrollview的contentOffset屬性並不會讓scrollview像用戶放開它一樣行動,我只是試了一下 – 2013-04-26 16:51:35
嗯,也許我明白你的錯誤,所以你希望scrollView繼續滾動,就好像用戶被解除了一樣他的手指?在那種情況下,當'y'達到-50.0時,我會嘗試將'touchesEnabled'設置爲'NO',但是您也可以實現一個委託方法'didEndScrollingAnimation',在那裏你可以重新啓用那個'scrollView'的接觸:我會定義將所有與行爲相關的代碼移動到'delegate'方法,並在這種情況下拋棄KVO。 – 2013-04-26 18:33:09