相关疑难解决方法(0)

dispatch_after - Swift中的GCD?

我从Apple那里浏览了iBook,找不到任何定义:

有人可以解释结构dispatch_after吗?

dispatch_after(<#when: dispatch_time_t#>, <#queue: dispatch_queue_t?#>, <#block: dispatch_block_t?#>)
Run Code Online (Sandbox Code Playgroud)

grand-central-dispatch ios swift

548
推荐指数
12
解决办法
24万
查看次数

如何在Swift3中取消DispatchQueue.main.asyncAfter(截止日期:时间)?

描述:

我目前正在使用以下代码来查看用户是否已停止在searchBar中输入内容.每当用户在0.5几秒钟后立即开始输入时,我想取消它.

码:

DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
    // your function here
}
Run Code Online (Sandbox Code Playgroud)

题:

DispatchQueue.main.asyncAfter如果用户再次开始输入,如何取消Swift3

我尝试过的:

我之前尝试过实施:

NSObject.cancelPreviousPerformRequests(withTarget: self)
self.perform(Selector(("searchForText:")), with: searchString, afterDelay: 0.5)
Run Code Online (Sandbox Code Playgroud)

然而,延迟似乎没有正常工作.

更多代码:

//In class SearchViewController: UITableViewController, UISearchResultsUpdating
func updateSearchResults(for searchController: UISearchController) {
    let searchString: String = searchController.searchBar.text!

    //This is what I previously tried.. which doesn't work...
    //NSObject.cancelPreviousPerformRequests(withTarget: self)
    //self.perform(Selector(("searchForText:")), with: searchString, afterDelay: 0.5)

    //A struct with the first example code shown above.
    Utils.Dispatch.delay(secondsToDelay: 1){
        print("1 second has passed ! " + …
Run Code Online (Sandbox Code Playgroud)

swift tvos swift3

18
推荐指数
1
解决办法
8648
查看次数

停止dispatch_after

我使用动画来指定提示以帮助延迟交互使用这些:

 let delay = 1.8 * Double(NSEC_PER_SEC)
    let time = dispatch_time(DISPATCH_TIME_NOW, Int64(delay))
    dispatch_after(time, dispatch_get_main_queue()) {
        //call the method which have the steps after delay.

        self.rain.alpha = 0

        UIView.animateWithDuration(5, animations: {

            self.rain.alpha = 1

        })

        self.tip.startAnimating()

    }
Run Code Online (Sandbox Code Playgroud)

但是,如果在动画开始之前,用户触摸屏幕,我需要停止此延迟过程.

animation dispatch swift

15
推荐指数
5
解决办法
1万
查看次数

如何取消特定的DispatchQueue.main.asyncAfter事件?

这个问题早已被问到了。但是我找不到适合当前Swift版本的不错的解决方案。


Swift 4-如何取消对的特定通话DispatchQueue.main.asyncAfter

DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
    // my code
}
Run Code Online (Sandbox Code Playgroud)
DispatchQueue.main.asyncAfter(deadline: .now() + 2.0) {
    // just cancel this event!
}
Run Code Online (Sandbox Code Playgroud)

grand-central-dispatch swift

11
推荐指数
0
解决办法
5711
查看次数

SWIFT-用户停止在文本字段中键入1秒后运行代码

快速地,如何在用户停止在文本字段中键入内容后1秒钟运行一些代码?有一个,textFieldDidChange但是它将在键入新字符后立即运行代码。

ios swift

3
推荐指数
1
解决办法
1385
查看次数

标签 统计

swift ×5

grand-central-dispatch ×2

ios ×2

animation ×1

dispatch ×1

swift3 ×1

tvos ×1