键入 Swift 时进行搜索

2024-03-10

我尝试在您用 Swift 编写时实现搜索。它已经可以工作了,但我需要一些调整。我随输入的每个字母一起发送

func searchBar(searchBar: UISearchBar, textDidChange searchText: String) {

    let debouncedFindUser = debounce(
        Static.searchDebounceInterval,
        Static.q,
        findUser)

    debouncedFindUser()
}

向后端发出请求。

func findUser() -> () {
    SearchService.sharedInstance.getUser(0, numberOfItems: 100,
        searchString: searchUserBar.text.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)!
        ,
        success: {SearchUserDto -> Void in
            if self.searchUserBar.text != nil {
                self.updateSearch()
            }
        },
        failure: {NSError -> Void in

    })
}

我尝试了这里找到的 Debounce 的实现如何消除方法调用的反跳? https://stackoverflow.com/questions/27116684/how-can-i-debounce-a-method-call

我的问题:

如果在特定时间内触发了方法调用,我想“重新启动”该方法调用。所以让我们夸张一点。

该请求仅在 2 秒内未输入搜索文本后启动。因此,如果我打字速度很快,并且每 0.5 秒键入一个字母,则除非我暂停至少 2 秒,否则永远不会触发请求。


您可以使用 NSTimer。在 textDidChange 中启动或无效并重新启动计时器 2 秒。让计时器在实际弹出时触发 findUser 方法。

    var debounceTimer: NSTimer?

@IBAction func test() {
    if let timer = debounceTimer {
        timer.invalidate()
    }
    debounceTimer = NSTimer(timeInterval: 2.0, target: self, selector: Selector("getUser"), userInfo: nil, repeats: false)
    NSRunLoop.currentRunLoop().addTimer(debounceTimer!, forMode: "NSDefaultRunLoopMode")
}

func getUser() {
    println("yeah")
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

键入 Swift 时进行搜索 的相关文章

随机推荐

  • 在整数规划中使用最小/最大运算符

    我正在尝试使用整数规划优化目标函数 我必须使用Max我的函数中的运算符 我想知道有什么办法可以处理这个问题吗 其实我的问题类似于使用最小 最大within整数线性规划 https stackoverflow com questions 10
  • Tinkerpop 框架写入数据库 - 新手

    我第一次使用 Frames 但我的 Java 还很生疏 我一直坚持通过框架将信息写入数据库 我一直在关注文档并拥有一个 Person 界面 public interface Person Property name public Strin
  • Magento 新购物车属性

    嗨 我面临的问题一开始似乎很简单 但现在变成了一场真正的噩梦 我被要求向所有产品添加一个属性 即点 使用管理面板非常简单地完成 并将其总计作为可以设置规则的购物车属性 我非常肯定购物车属性是在以下位置定义的 class Mage Sales
  • 实例化接口而不使用实现类

    我有一个接口 称为 Planet 其实现类受到保护 并且我无法更改其访问修饰符 但是 我需要在主类中调用实现类的方法 例如 在实现类中 我有 public void orbit distance 我努力了 private Planet pl
  • 因此更改了 Git 的默认编辑器,现在我如何从 Git bash 调用它?

    我通过将以下内容应用于 Git 的全局配置来更改 Git 的默认编辑器 core editor C Program Files Notepad notepad exe multiInst notabbar nosession noPlugi
  • 如何删除CheckBox右侧不需要的空格?

    我正在研究自定义列表视图 我想展示一个CheckBox在自定义视图中 没有文字说明CheckBox 我发现它的右侧总是有一些空格CheckBox 这是我的布局 xml 文件
  • 使用 LINQ to SQL 时如何抽象出持久性代码?

    我喜欢 LINQ to SQL 但一直困扰我的是 在使用它时 我的存储库代码由 LINQ to SQL 框架生成 因此与 SQL Server 数据库紧密耦合 你们中是否有人以抽象 松散耦合的方式使用 LINQ to SQL 如果是 您是如
  • 当窗口顶部到达特定元素时将类添加到 DIV,并在未到达时将其删除

    我有一个 navigation在包装纸的顶部 我想添加一个 fixed类 当窗口顶部到达 bottomDIV 并在顶部时删除此类 bottom位于窗口范围内 它是在添加和删除 fixed 类之间切换 div div class naviga
  • “内存压力”是什么意思?

    通读一遍苔丝 费兰德斯的博客 https blogs msdn microsoft com tess 2008 04 17 how does the gc work and what are the sizes of the differe
  • 修改测试中的 Django 设置

    来自姜戈docs https docs djangoproject com en dev topics settings altering settings at runtime 您不应该在运行时更改应用程序中的设置 为了 例如 不要在视图
  • 带地图的“if”语句中的 Golang 语法

    我正在这里阅读教程 http www newthinktank com 2015 02 go programming tutorial http www newthinktank com 2015 02 go programming tut
  • 离子/云角 FacebookAuth 给出空错误

    我已将 ionic 云服务添加到我的应用程序中 并希望使用本机 FaceBook 身份验证 import FacebookAuth from ionic cloud angular this facebookAuth login 在 And
  • 如何制作可变参数 is_same?

    如何制作一个类模板来返回其任何可变参数类型是否等于第一种类型 我希望能够做到这一点 is same
  • Delphi 2006 - 优雅地终止线程并仍然触发 OnTerminate 处理程序的最佳方法是什么?

    我有一个线程有时会由于永远不会返回的 DLL 调用而冻结 我怀疑 在一般情况下 当您调用像 Indy 这样的阻塞例程时 是否有一种方法可以通过触发线程 OnTerminate 处理程序来从中恢复 如果我调用 TerminateThread
  • Material UI 自动完成自定义 renderInput

    我正在关注来自的各种例子https material ui com components autocomplete https material ui com components autocomplete 创建自定义自动完成 我正在尝试使
  • 用C++在特定路径写入文件

    我有这段代码可以成功写入文件 ofstream outfile path outfile write buffer size outfile flush outfile close 其余代码中的缓冲区和大小都可以 如何将文件放在特定路径中
  • 如何将 JUnit 与 Sublime Text 3 结合使用

    这是一个由两部分组成的问题 我正在尝试将 JUnit 用于我正在 Sublime Text 3 中处理的项目 我的文件设置看起来有点像这样 Vulcan Vulcan sublime project bin src core org vul
  • 对象 apache 不是包 org 的成员

    import org apache tools ant Project object HelloWorld def main args Array String println Hello world 我尝试使用以下命令运行此代码 java
  • 如何检查服务器是否正在应用程序引擎上运行

    我需要检查服务器是否正在应用程序引擎上运行 像这样的事情 if canRunAppEngine runAppEngine app handleRequest else app start 您可以指定环境变量 然后在 Dart 代码中检查是否
  • 键入 Swift 时进行搜索

    我尝试在您用 Swift 编写时实现搜索 它已经可以工作了 但我需要一些调整 我随输入的每个字母一起发送 func searchBar searchBar UISearchBar textDidChange searchText Strin