仅在执行任务时隐藏 UIBarButtonItem
Posted
技术标签:
【中文标题】仅在执行任务时隐藏 UIBarButtonItem【英文标题】:Hide UIBarButtonItem only while a task is performing 【发布时间】:2013-01-28 19:10:12 【问题描述】:我有一个带有刷新 rightBarButtonItem 的导航栏,我想在刷新时隐藏它。
我尝试将其设置为 nil,然后在任务完成后将其设置回刷新按钮,但任务可能太快所以不显示。
还有什么办法可以隐藏吗?
我想给用户一个反馈,即刷新按钮在我正在使用的 MBProgressHUD 之外被点击。
【问题讨论】:
任务是否可能需要时间,或者您只是希望按钮具有快速闪烁效果? 我希望任务尽可能快(它正在解析来自网站的数据)。一个快速的闪光效果就可以了。 此处选择的解决方案可能会有所帮助,但很可能需要进行一些修改:***.com/questions/6893181/… 问题是 UIBarButtonItem 没有 setAlpha 属性。 【参考方案1】:您想要做的不是删除它,而是禁用它,这会使它“变灰”。
使用此代码:
rightBarButtonItem.enabled = NO;
或 [rightBarButtonItem setEnabled: NO];
取决于您的语法选择。
您首先需要对 rightBarButtonItem 有一个引用,这可以通过使用 IBOutlet 来实现。
【讨论】:
我尝试在我的头文件中为 UIBarButtonItem 添加 IBOutlet,然后在刷新按钮调用的方法中,我将其设置为启用 = NO,当任务完成后我将其设置回是的,仍然没有反馈。有什么想法吗?谢谢! 你的任务是运行在主线程还是后台线程?如果它是主线程,您可能会阻塞 UI。当 UI 能够更新时,您已经将 enable 重置为 YES。 它在主线程上,我阻塞了 UI。有什么办法吗? (我希望 UI 在任务运行时保持阻塞) 确保在开始阻塞线程之前设置 UIBarButtonItem。如果不能解决,请将有问题的代码上传到 Github 的 gist 中。以上是关于仅在执行任务时隐藏 UIBarButtonItem的主要内容,如果未能解决你的问题,请参考以下文章
在 KeyboardDidShow 上切换 UIBarButtonItem
UIBarButtonItem 仅在按下足够长的时间时才会触发动作
对于 iPhone - 但不是 iOS 模拟器 - UIToolbar UIBarButtonItem 将仅在长按时突出显示,而不是在点击时突出显示