最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2016年02月22日 09:02:16   作者:常思過  
這篇文章主要介紹了iOS應用開發(fā)中UIScrollView滾動視圖的基本用法總結(jié),作者還介紹了重寫UIScrollView中的hitTest方法來解決長按的事件問題,需要的朋友可以參考下

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

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

而UISlider這個控件沒有滑動,讓人很抓狂。

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

下面引用一下前輩的總結(jié),因為自己覺得沒有他總結(jié)的詳細

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


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

期間試過幾種方法,只有一種可行,就是重寫UIScrollView的hitTest方法:當滑動UISlider時,使UIScrollView不可滑動。

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

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

復制代碼 代碼如下:

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 320, 460)];
    scrollView.backgroundColor = [UIColor redColor];
    // 是否支持滑動最頂端
//    scrollView.scrollsToTop = NO;
    scrollView.delegate = self;
    // 設置內(nèi)容大小
    scrollView.contentSize = CGSizeMake(320, 460*10);
    // 是否反彈
//    scrollView.bounces = NO;
    // 是否分頁
//    scrollView.pagingEnabled = YES;
    // 是否滾動
//    scrollView.scrollEnabled = NO;
//    scrollView.showsHorizontalScrollIndicator = NO;
    // 設置indicator風格
//    scrollView.indicatorStyle = UIScrollViewIndicatorStyleWhite;
    // 設置內(nèi)容的邊緣和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
{
    
}
 
// 縮放結(jié)束時
- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale
{
    
}
 
// 視圖已經(jīng)放大或縮小
- (void)scrollViewDidZoom:(UIScrollView *)scrollView
{
NSLog(@"scrollViewDidScrollToTop");
}
 */
 
// 是否支持滑動至頂部
- (BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView
{
    return YES;
}
 
// 滑動到頂部時調(diào)用該方法
- (void)scrollViewDidScrollToTop:(UIScrollView *)scrollView
{
    NSLog(@"scrollViewDidScrollToTop");
}
 
// scrollView 已經(jīng)滑動
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    NSLog(@"scrollViewDidScroll");
}
 
// scrollView 開始拖動
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
    NSLog(@"scrollViewWillBeginDragging");
}
 
// scrollView 結(jié)束拖動
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
    NSLog(@"scrollViewDidEndDragging");
}
 
// scrollView 開始減速(以下兩個方法注意與以上兩個方法加以區(qū)別)
- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView
{
    NSLog(@"scrollViewWillBeginDecelerating");
}
 
// scrollview 減速停止
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
   NSLog(@"scrollViewDidEndDecelerating");
}

相關(guān)文章

  • iOS使用 CABasicAnimation 實現(xiàn)簡單的跑馬燈(無cpu暴漲)

    iOS使用 CABasicAnimation 實現(xiàn)簡單的跑馬燈(無cpu暴漲)

    本篇文章主要介紹了iOS使用 CABasicAnimation 實現(xiàn)簡單的跑馬燈(無cpu暴漲),具有一定的參考價值,有興趣的可以了解一下。
    2017-01-01
  • Objective-C 自定義漸變色Slider的實現(xiàn)方法

    Objective-C 自定義漸變色Slider的實現(xiàn)方法

    系統(tǒng)提供UISlider,但在開發(fā)過程中經(jīng)常需要自定義,本次需求內(nèi)容是實現(xiàn)一個擁有漸變色的滑動條,且漸變色隨著手指touch的位置不同改變區(qū)域,這篇文章主要介紹了Objective-C 自定義漸變色Slider,需要的朋友可以參考下
    2024-07-07
  • iOS Tabbar中間添加凸起可旋轉(zhuǎn)按鈕功能

    iOS Tabbar中間添加凸起可旋轉(zhuǎn)按鈕功能

    最近的項目中有需求在tabbar中間添加凸起按鈕,并且點擊時按鈕要旋轉(zhuǎn),看了仿斗魚的凸起,點擊后是present出來View,這篇文章主要介紹了iOS Tabbar中間添加凸起可旋轉(zhuǎn)按鈕,需要的朋友可以參考下
    2017-12-12
  • iOS使用UICountingLabel實現(xiàn)數(shù)字變化的動畫效果

    iOS使用UICountingLabel實現(xiàn)數(shù)字變化的動畫效果

    本文主要介紹了iOS使用UICountingLabel實現(xiàn)數(shù)字變化動畫效果的方法,具有一定的參考價值,下面跟著小編一起來看下吧
    2016-12-12
  • iOS橫屏彈鍵盤的高度錯誤異常解決

    iOS橫屏彈鍵盤的高度錯誤異常解決

    這篇文章主要給大家介紹了關(guān)于iOS橫屏彈鍵盤的高度錯誤異常解決的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-04-04
  • CocoaPods1.9.0 安裝使用教程詳解

    CocoaPods1.9.0 安裝使用教程詳解

    CocoaPods是OS X和iOS下的一個第三類庫管理工具,這篇文章主要介紹了CocoaPods1.9.0 安裝使用,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03
  • 使用SDLocalize實現(xiàn)高效完成iOS多語言工作

    使用SDLocalize實現(xiàn)高效完成iOS多語言工作

    這篇文章主要介紹了使用SDLocalize實現(xiàn)高效完成iOS多語言工作的相關(guān)資料,需要的朋友可以參考下
    2022-10-10
  • iOS系統(tǒng)的底層通知框架庫示例詳解

    iOS系統(tǒng)的底層通知框架庫示例詳解

    這篇文章主要給大家介紹了關(guān)于iOS系統(tǒng)的底層通知框架庫的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對各位iOS開發(fā)者們具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-05-05
  • iOS監(jiān)控筆記之啟動crash

    iOS監(jiān)控筆記之啟動crash

    iOS崩潰是讓iOS開發(fā)人員比較頭痛的事情,app崩潰了,說明代碼寫的有問題,下面這篇文章主要給大家介紹了關(guān)于iOS監(jiān)控筆記之啟動crash的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2018-05-05
  • IOS 開發(fā)之網(wǎng)絡圖片輪播圖的實現(xiàn)

    IOS 開發(fā)之網(wǎng)絡圖片輪播圖的實現(xiàn)

    這篇文章主要介紹了IOS 開發(fā)之網(wǎng)絡圖片輪播圖的實現(xiàn)的相關(guān)資料,希望通過此文大家能夠掌握輪播圖的實現(xiàn),需要的朋友可以參考下
    2017-09-09

最新評論

安西县| 临西县| 紫金县| 鲁山县| 大丰市| 青田县| 吉木萨尔县| 黑山县| 精河县| 长泰县| 枝江市| 通江县| 静安区| 合川市| 阿尔山市| 丹巴县| 孟连| 钟山县| 台州市| 彭泽县| 兴化市| 南昌市| 新和县| 方山县| 鄯善县| 梁山县| 贞丰县| 宜城市| 东平县| 横峰县| 错那县| 运城市| 洛阳市| 太和县| 普格县| 富蕴县| 义马市| 万荣县| 嘉定区| 将乐县| 鄄城县|