在項目開辟時碰到一個成績,我在UIViewController下面直接創立了一個UIScrollerView,把UIScrollerView作為一個子視圖添加到了UIViewController,
又再UIScrollerView中添加了一個UISlider的組件,在手勢滑動的進程中,很難滑動到UISlider這個控件,常常是滑動的時刻UIScrollerView停止了轉動,
而UISlider這個控件沒有滑動,讓人很抓狂。
上彀詳細去懂得了一下UIScrollerView的詳解,終究完全明確了成績出在哪裡
上面援用一下先輩的總結,由於本身認為沒有他總結的具體
UIScrollView重載了hitTest辦法,當手指touch的時刻,UIScrollView會攔阻一切event,然後期待150ms,在這段時光內,假如沒有手指沒有挪動,其時間停止時,UIScrollView會發送tracking event到子視圖上,而且本身不滑動。在時光停止前,手指產生了挪動,那末UIScrollView就會停止滑動,從而撤消發送tracking。
看來是UIScrollView的成績。直接拖動UISlider,此時touch時光在150ms之內,UIScrollView會以為是拖動本身,從而攔阻了event,招致UISlider接收不到滑動的event。然則只需按住UISlider一會再拖動,此時此時touch時光跨越150ms,是以滑動的event會發送到UISlider上。
時代試過幾種辦法,只要一種可行,就是重寫UIScrollView的hitTest辦法:當滑動UISlider時,使UIScrollView弗成滑動。
然則又湧現了一個成績,我的UIScrollerView是直接繼續了UIScrollerView,在UIViewController中是沒法重寫的UIScrollerView的hitTest辦法的,所以須要從新創立一個view,繼續UIScrollerView,然後再重寫上述辦法,然後再導入UIViewController中便可以輕松完成了。
上面來看一些UIScrollerView中一些比擬罕見的用法,解釋都包括在正文中了:
- (void)viewDidLoad
{
[super viewDidLoad];
scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 320, 460)];
scrollView.backgroundColor = [UIColor redColor];
// 能否支撐滑動最頂端
// scrollView.scrollsToTop = NO;
scrollView.delegate = self;
// 設置內容年夜小
scrollView.contentSize = CGSizeMake(320, 460*10);
// 能否反彈
// scrollView.bounces = NO;
// 能否分頁
// scrollView.pagingEnabled = YES;
// 能否轉動
// scrollView.scrollEnabled = NO;
// scrollView.showsHorizontalScrollIndicator = NO;
// 設置indicator作風
// scrollView.indicatorStyle = UIScrollVieWindicatorStyleWhite;
// 設置內容的邊沿和Indicators邊沿
// scrollView.contentInset = UIEdgeInsetsMake(0, 50, 50, 0);
// scrollView.scrollIndicatorInsets = UIEdgeInsetsMake(0, 50, 0, 0);
// 提醒用戶,Indicators Flash
[scrollView FlashScrollIndicators];
// 能否同時活動,lock
scrollView.directionalLockEnabled = YES;
[self.view addSubview:scrollView];
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 200, 320, 40)];
label.backgroundColor = [UIColor yellowColor];
label.text = @"進修scrolleview";
[scrollView addSubview:label];
[label release];
}
#pragma mark -
/*
// 前往一個縮小或許減少的視圖
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
}
// 開端縮小或許減少
- (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:
(UIView *)view
{
}
// 縮放停止時
- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale
{
}
// 視圖曾經縮小或減少
- (void)scrollViewDidZoom:(UIScrollView *)scrollView
{
NSLog(@"scrollViewDidScrollToTop");
}
*/
// 能否支撐滑動至頂部
- (BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView
{
return YES;
}
// 滑動到頂部時挪用該辦法
- (void)scrollViewDidScrollToTop:(UIScrollView *)scrollView
{
NSLog(@"scrollViewDidScrollToTop");
}
// scrollView 曾經滑動
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
NSLog(@"scrollViewDidScroll");
}
// scrollView 開端拖動
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
NSLog(@"scrollViewWillBeginDragging");
}
// scrollView 停止拖動
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
NSLog(@"scrollViewDidEndDragging");
}
// scrollView 開端加速(以下兩個辦法留意與以上兩個辦法加以差別)
- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView
{
NSLog(@"scrollViewWillBeginDecelerating");
}
// scrollview 加速停滯
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
NSLog(@"scrollViewDidEndDecelerating");
}
【iOS運用開辟中UIScrollView轉動視圖的根本用法總結】的相關資料介紹到這裡,希望對您有所幫助! 提示:不會對讀者因本文所帶來的任何損失負責。如果您支持就請把本站添加至收藏夾哦!