【问题标题】:iOS keyboard delegate callback functioniOS 键盘委托回调函数
【发布时间】:2011-08-23 21:42:07
【问题描述】:

在我正在编写的 iOS 应用程序中,我设置了一个函数,当在文本字段键盘上点击返回键时运行。

该功能很慢,运行大约需要 15 - 20 秒,在此期间整个屏幕冻结,键盘挂在屏幕上,没有任何反应。

只有在函数运行完成后,键盘才会消失。

XIB 文件的“Editing Did End”设置为“searchPlates”,即功能名称,一切正常,我只想让键盘消失,以便在搜索发生时显示 UIProgressView。

我在视图控制器中也有以下代码:

-(BOOL)textFieldShouldReturn:(UITextField *)thisTextField {
    if (thisTextField == self.plateInput) {
        [thisTextField resignFirstResponder];
    }
    return YES;
} 

够清楚吗?我希望在调用 searchPlates 时键盘立即消失。

【问题讨论】:

    标签: objective-c ios asynchronous


    【解决方案1】:

    您应该避免在主运行循环中直接使用像您这样的长时间运行的函数。相反,在新线程中执行需要 15-20 秒的工作。您可以在触发该工作时显示进度视图,并在该工作完成时将其隐藏。

    请参阅How do I update a progress bar in Cocoa during a long running loop?,了解您可能希望如何执行此操作的具体示例。

    【讨论】:

    • 哦,这很有帮助,我想我快到了,虽然我有点迷路了。此代码是用于 BLOCK 完成时的代码吗? dispatch_async(dispatch_get_main_queue(), ^{
    • 我明白了,每当我想跳出线程并做其他事情时,我都会使用 dispatch_async,即更新进度条。天才!这东西很难,但当它起作用时非常令人满意/我理解它。谢谢
    猜你喜欢
    • 1970-01-01
    • 2012-08-01
    • 1970-01-01
    • 2015-03-18
    • 2013-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-20
    相关资源
    最近更新 更多