你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> iOS運用開辟中UIScrollView轉動視圖的根本用法總結

iOS運用開辟中UIScrollView轉動視圖的根本用法總結

編輯:IOS開發綜合

在項目開辟時碰到一個成績,我在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轉動視圖的根本用法總結】的相關資料介紹到這裡,希望對您有所幫助! 提示:不會對讀者因本文所帶來的任何損失負責。如果您支持就請把本站添加至收藏夾哦!

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved