国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 系統(tǒng) > iOS > 正文

iOS應(yīng)用開發(fā)中UIScrollView滾動(dòng)視圖的基本用法總結(jié)

2020-07-26 03:27:35
字體:
供稿:網(wǎng)友

在項(xiàng)目開發(fā)時(shí)遇到一個(gè)問題,我在UIViewController上面直接創(chuàng)建了一個(gè)UIScrollerView,把UIScrollerView作為一個(gè)子視圖添加到了UIViewController,

又再UIScrollerView中添加了一個(gè)UISlider的組件,在手勢(shì)滑動(dòng)的過程中,很難滑動(dòng)到UISlider這個(gè)控件,經(jīng)常是滑動(dòng)的時(shí)候UIScrollerView進(jìn)行了滾動(dòng),

而UISlider這個(gè)控件沒有滑動(dòng),讓人很抓狂。

上網(wǎng)具體去了解了一下UIScrollerView的詳解,終于徹底明白了問題出在哪里

下面引用一下前輩的總結(jié),因?yàn)樽约河X得沒有他總結(jié)的詳細(xì)

UIScrollView重載了hitTest方法,當(dāng)手指touch的時(shí)候,UIScrollView會(huì)攔截所有event,然后等待150ms,在這段時(shí)間內(nèi),如果沒有手指沒有移動(dòng),當(dāng)時(shí)間結(jié)束時(shí),UIScrollView會(huì)發(fā)送tracking event到子視圖上,并且自身不滑動(dòng)。在時(shí)間結(jié)束前,手指發(fā)生了移動(dòng),那么UIScrollView就會(huì)進(jìn)行滑動(dòng),從而取消發(fā)送tracking。


看來是UIScrollView的問題。直接拖動(dòng)UISlider,此時(shí)touch時(shí)間在150ms以內(nèi),UIScrollView會(huì)認(rèn)為是拖動(dòng)自己,從而攔截了event,導(dǎo)致UISlider接受不到滑動(dòng)的event。但是只要按住UISlider一會(huì)再拖動(dòng),此時(shí)此時(shí)touch時(shí)間超過150ms,因此滑動(dòng)的event會(huì)發(fā)送到UISlider上。

期間試過幾種方法,只有一種可行,就是重寫UIScrollView的hitTest方法:當(dāng)滑動(dòng)UISlider時(shí),使UIScrollView不可滑動(dòng)。

但是又出現(xiàn)了一個(gè)問題,我的UIScrollerView是直接繼承了UIScrollerView,在UIViewController中是無法重寫的UIScrollerView的hitTest方法的,所以需要重新創(chuàng)建一個(gè)view,繼承UIScrollerView,然后再重寫上述方法,然后再導(dǎo)入U(xiǎn)IViewController中就可以輕松實(shí)現(xiàn)了。

下面來看一些UIScrollerView中一些比較常見的用法,說明都包含在注釋中了:

復(fù)制代碼 代碼如下:

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 320, 460)];
    scrollView.backgroundColor = [UIColor redColor];
    // 是否支持滑動(dòng)最頂端
//    scrollView.scrollsToTop = NO;
    scrollView.delegate = self;
    // 設(shè)置內(nèi)容大小
    scrollView.contentSize = CGSizeMake(320, 460*10);
    // 是否反彈
//    scrollView.bounces = NO;
    // 是否分頁(yè)
//    scrollView.pagingEnabled = YES;
    // 是否滾動(dòng)
//    scrollView.scrollEnabled = NO;
//    scrollView.showsHorizontalScrollIndicator = NO;
    // 設(shè)置indicator風(fēng)格
//    scrollView.indicatorStyle = UIScrollViewIndicatorStyleWhite;
    // 設(shè)置內(nèi)容的邊緣和Indicators邊緣
//    scrollView.contentInset = UIEdgeInsetsMake(0, 50, 50, 0);
//    scrollView.scrollIndicatorInsets = UIEdgeInsetsMake(0, 50, 0, 0);
    // 提示用戶,Indicators flash
    [scrollView flashScrollIndicators];
    // 是否同時(shí)運(yùn)動(dòng),lock
    scrollView.directionalLockEnabled = YES;
    [self.view addSubview:scrollView];
    
    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 200, 320, 40)];
    label.backgroundColor = [UIColor yellowColor];
    label.text = @"學(xué)習(xí)scrolleview";
    [scrollView addSubview:label];
    [label release];
}
 
#pragma mark -
/*
// 返回一個(gè)放大或者縮小的視圖
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
    
}
// 開始放大或者縮小
- (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:
(UIView *)view
{
    
}
 
// 縮放結(jié)束時(shí)
- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale
{
    
}
 
// 視圖已經(jīng)放大或縮小
- (void)scrollViewDidZoom:(UIScrollView *)scrollView
{
NSLog(@"scrollViewDidScrollToTop");
}
 */
 
// 是否支持滑動(dòng)至頂部
- (BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView
{
    return YES;
}
 
// 滑動(dòng)到頂部時(shí)調(diào)用該方法
- (void)scrollViewDidScrollToTop:(UIScrollView *)scrollView
{
    NSLog(@"scrollViewDidScrollToTop");
}
 
// scrollView 已經(jīng)滑動(dòng)
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    NSLog(@"scrollViewDidScroll");
}
 
// scrollView 開始拖動(dòng)
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
    NSLog(@"scrollViewWillBeginDragging");
}
 
// scrollView 結(jié)束拖動(dòng)
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
    NSLog(@"scrollViewDidEndDragging");
}
 
// scrollView 開始減速(以下兩個(gè)方法注意與以上兩個(gè)方法加以區(qū)別)
- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView
{
    NSLog(@"scrollViewWillBeginDecelerating");
}
 
// scrollview 減速停止
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
   NSLog(@"scrollViewDidEndDecelerating");
}

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 孝昌县| 连山| 新津县| 驻马店市| 丰县| 曲靖市| 台东市| 贵南县| 江都市| 拉孜县| 连州市| 通化市| 恩平市| 彩票| 林口县| 慈利县| 文山县| 镇安县| 铁力市| 二连浩特市| 梁河县| 黎平县| 通江县| 南川市| 营山县| 连州市| 卢湾区| 历史| 天峻县| 通河县| 犍为县| 肥东县| 玉林市| 化德县| 嘉义县| 迁西县| 琼中| 杭锦旗| 大同县| 新源县| 丹凤县|