你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> 關於iOS延時操作,階段性總結(部分關於點擊,雙擊事件沖突)

關於iOS延時操作,階段性總結(部分關於點擊,雙擊事件沖突)

編輯:IOS開發綜合

之前寫過一個簡單的圖片查看器,在圖片單擊,雙擊事件處理上遇到問題,通過延時單擊事件操作。

方法一:

詳細:1.設置全局變量

bool doubleTap;
在單擊事件方法中設置延時操作

單擊時進行延時:

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
        if (doubleTap == YES) return;
        //單擊事件的相關操作
    });


****當是雙擊時:

doubleTap = YES;
這樣在0.2秒之後不會進行單機事件的相關操作,執行雙擊操作,記得設置(doubleTap = NO)

****當是雙擊事件時:

在0.2秒之後進行單擊事件操作
-------------------------------------
方法二:(在網易面試,當時討論到這個問題,我說了自己方法,大牛給我了兩個方法-只能說大牛就是大牛奮斗

    [self performSelector:@selector(test) withObject:nil afterDelay:.2];
    
    [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(test) object:nil];
上面的兩個方法簡單說就是,一個進行延時操作,一個就是取消延時操作,通過這個進行操控單機雙擊。(由於時間問題,只是簡單試用了這個方法(好用大笑),還沒有把圖片查看的源代碼修改,所以就不貼出來了)

---------------------------------

說到這簡單的總結下相關延時操作:

00001.建議使用的方法

- (void)delay1
{
    // 延遲執行不要用sleep,壞處:卡住當前線程
    [NSThread sleepForTimeInterval:3];
    NSLog(@"操作");
}
00002.方法二

- (void)delay2
{
    // 一旦定制好延遲任務後,不會卡主當前線程
    [self performSelector:@selector(download:) withObject:@"http://美女.jpg" afterDelay:3];
}

00003.方法三

- (void)delay3
{
    // 3秒後回到主線程執行block中的代碼
    dispatch_queue_t queue = dispatch_get_main_queue();
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3 * NSEC_PER_SEC)), queue, ^{
        NSLog(@"------task------%@", [NSThread currentThread]);
    });
}

00004.方法四

- (void)delay4
{
    // 3秒後自動開啟新線程 執行block中的代碼
    dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3 * NSEC_PER_SEC)), queue, ^{
        NSLog(@"------task------%@", [NSThread currentThread]);
    });
}

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