欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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");
}

相關文章

  • 用iOS模擬器安裝App的方法

    用iOS模擬器安裝App的方法

    下面小編就為大家分享一篇用iOS模擬器安裝App的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01
  • iOS中解決Xcode9的Log日志無法輸出中文的問題小結(jié)

    iOS中解決Xcode9的Log日志無法輸出中文的問題小結(jié)

    這篇文章主要介紹了iOS中解決Xcode9的Log日志無法輸出中文的問題小結(jié),需要的朋友可以參考下
    2017-11-11
  • iOS實現(xiàn)背景高斯模糊效果

    iOS實現(xiàn)背景高斯模糊效果

    這篇文章主要介紹了iOS實現(xiàn)背景高斯模糊效果,代碼簡單易懂,非常不錯,需要的朋友參考下吧
    2016-12-12
  • 總結(jié)iOS開發(fā)中的斷點續(xù)傳與實踐

    總結(jié)iOS開發(fā)中的斷點續(xù)傳與實踐

    本文先從斷點續(xù)傳問題開始,介紹斷點續(xù)傳概述和原理。接著結(jié)合筆者調(diào)研中嘗試的 AFHTTPRequestOpeartion,簡單分析源碼。最后分別基于 NSURLConnection,NSURLSessionDataTask 和 NSURLSessionDownloadTask 去實現(xiàn)應用重啟情況下的斷點續(xù)傳。下面一起來看看。
    2016-07-07
  • H5混合開發(fā)IOS中遇到的坑

    H5混合開發(fā)IOS中遇到的坑

    本篇文章主要給大家講述了在用H5混合開發(fā)APP時,IOS項目中遇到的坑以及解決辦法,需要的朋友參考一下吧。
    2017-12-12
  • IOS自適配利器Masonry使用指南

    IOS自適配利器Masonry使用指南

    如果說自動布局解救了多屏幕適配,那眾多三方庫的出現(xiàn)就解救了系統(tǒng)自動布局的寫法。Masonry就是其中一個。用法上也比較簡單靈活,很大程度上替代了傳統(tǒng)的NSLayoutConstraint布局方式。下面我們就來具體探討下吧
    2016-01-01
  • iOS界面布局簡化UIStackView使用詳解

    iOS界面布局簡化UIStackView使用詳解

    這篇文章主要為大家介紹了iOS界面布局簡化UIStackView使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-09-09
  • iOS中UILabel實現(xiàn)長按復制功能實例代碼

    iOS中UILabel實現(xiàn)長按復制功能實例代碼

    在iOS開發(fā)過程中,有時候會用到UILabel展示的內(nèi)容,那么就設計到點擊UILabel復制它上面展示的內(nèi)容的功能,也就是Label長按復制功能,下面這篇文章主要給大家介紹了關于在iOS中UILabel實現(xiàn)長按復制功能的相關資料,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-10-10
  • Mac OSX 打開原生自帶讀寫NTFS功能(圖文)

    Mac OSX 打開原生自帶讀寫NTFS功能(圖文)

    這篇文章主要介紹了Mac OSX 打開原生自帶讀寫NTFS功能(圖文),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-11-11
  • iOS NSDate中關于夏令時的坑

    iOS NSDate中關于夏令時的坑

    這篇文章主要給大家介紹了關于iOS NSDate中夏令時的坑,以及iOS 時間字符串&NSDate&時間戳 相互轉(zhuǎn)換的相關內(nèi)容,分享出來供大家參考學習,需要的朋友可以參考借鑒,下面隨小編來一起學習學習吧
    2018-08-08

最新評論