8
我有一個UIScrollView與分頁(所以典型的模型與UIPageControl和頁面之間左右拖/甩),我有工作正常。奇怪的是,當我想擺脫反彈(這樣你就不會看到左側和右側UI背後的黑色)時,突然分頁不再有效。UIScrollView - (反彈=否)似乎覆蓋(pagingEnabled =是)
換句話說,當:
scrollView.pagingEnabled = YES;
scrollView.bounces = YES;
一切工作正常,但我不喜歡在頁面(0)和頁(長度爲1)的彈跳。但是當我這樣做時:
scrollView.pagingEnabled = YES;
scrollView.bounces = NO;
它停止在每個頁面捕捉到位,而是將所有頁面視爲一個長頁面。所以看起來由於某種原因分頁取決於彈跳,只要我能以某種方式停止彈跳就可以了。那麼,還有其他方法可以擺脫它嗎?還是有什麼我做錯了?
編輯: 解決辦法:
@interface PagingScrollView : UIScrollView
@end
@implementation PagingScrollView
- (id)initWithFrame:(CGRect)frame
{
if (self = [super initWithFrame:frame])
{
self.pagingEnabled = YES;
self.bounces = YES;
}
return self;
}
- (void)setContentOffset:(CGPoint)offset
{
CGRect frame = [self frame];
CGSize contentSize = [self contentSize];
CGPoint contentOffset = [self contentOffset];
// Clamp the offset.
if (offset.x <= 0)
offset.x = 0;
else if (offset.x > contentSize.width - frame.size.width)
offset.x = contentSize.width - frame.size.width;
if (offset.y <= 0)
offset.y = 0;
else if (offset.y > contentSize.height - frame.size.height)
offset.y = contentSize.height - frame.size.height;
// Update only if necessary
if (offset.x != contentOffset.x || offset.y != contentOffset.y)
{
[super setContentOffset:offset];
}
}
@end
哇,這很愚蠢。那麼,我會試試看,你可能只是這個話題中的「大贏家」。 – Eli 2009-09-21 18:14:55
它的工作原理,但你需要重寫-setContentOffset,而不是-setContentOffset:動畫,因爲後者將調用一個並不總是調用的函數,而前者覆蓋contentOffset的mutator函數,以便捕獲所有的情況。 – Eli 2009-09-22 18:19:36
這很奇怪。我做了很多類似的事情,通常單參數方法會調用具有動畫的動畫變體:YES – rpetrich 2009-09-22 20:30:00