IBAction 中跳过的用户界面命令

2023-12-05

这是我的代码:

-(IBAction)saveDownloadedImage
{
    NSLog(@"Test");    EXECUTED
    indicatorView.hidden = NO;  NOT EXECUTED
    [indicatorView startAnimating];  NOT EXECUTED
    [statusLabel setText:@"WHY?"];  NOT EXECUTED
    [currentPicture setImage:[imageView image]];   EXECUTED
    ImageFileManager *fileManager = [[ImageFileManager alloc] init]; EXECUTED
    [fileManager saveImageToDisk:currentPicture]; EXECUTED
    indicatorView.hidden = YES;
    [statusLabel setText:@"Image saved successfully."]; EXECUTED
    saveButton.enabled = NO; EXECUTED

}

保存过程大约需要5秒。所以在 UI 中看到该指示器是正常的。但什么也没发生!任何想法?


一切都被执行了。你的问题是saveImageToDisk调用是同步的,您从 UI 线程调用它。当您阻塞 UI 线程时,不会重新绘制任何内容。指示器已显示,但无法绘制到屏幕上,直到IBAction当它再次被隐藏时返回。

您必须异步调用保存方法。
阻塞 UI 线程从来都不是一个好主意。

编辑:请参阅以下问题的答案以获得正确的解决方案:ios 异步调用数据库

Edit2:可能的解决方案之一(未测试)


-(IBAction)saveDownloadedImage {
    indicatorView.hidden = NO; //Note you can use hidesWhenStopped property for this
    [indicatorView startAnimating];
    [statusLabel setText:@"BECAUSE..."];
    [currentPicture setImage:[imageView image]];

    [NSThread detachNewThreadSelector:@selector(save) toTarget:self withObject:nil]
}

- (void)save {
    @autoreleasepool {
        ImageFileManager *fileManager = [[ImageFileManager alloc] init];
        [fileManager saveImageToDisk:currentPicture];

        [self performSelectorOnMainThread:@selector(updateUI) withObject:nil waitUntilDone:NO];
    }
}

- (void)updateUI {
    indicatorView.hidden = YES;
    [statusLabel setText:@"Image saved successfully."];
    saveButton.enabled = NO;
}

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

IBAction 中跳过的用户界面命令 的相关文章

  • 如何将 NSIndexpath 转换为 NSInteger 或简单的 int?

    我需要将 nsindexpath var 转换为 NsInteger 或简单的 int 例如 int rowIndex mGoogleBaseTable selectedRow mGoogleBaseTable is a NSTable t
  • 使用 Cocoa 获取无法安装的驱动器列表

    我想获取在 OS X 下使用 Cocoa Objective C 无法安装 弹出的驱动器列表 我希望 NSWorkspace getFileSystemInfoForPath 能帮助我 NSArray listOfMedia NSWorks
  • 如何从代码隐藏中设置 CarouselView 的项目?

    我有一个 CarouselView 它绑定到图像的 ItemsSource 但我想通过更改 CarouselView 的索引来更改当前显示的图像 我尝试使用 CarouselView Position 作为必须选择的元素的索引 但不幸的是这
  • 如何请求用户开启定位服务

    我需要我的应用程序来访问用户的当前位置 它在应用程序开始时检查用户是否已设置 如果没有 我需要应用程序显示提示以使其使用位置服务 就像警报视图一样 点击按钮 它应该会带您进入 iPhone 上的位置服务屏幕 您可以通过以下代码检查 loca
  • UISearchController 保留问题

    我正在尝试使用 UISearchController 但是我遇到了无法解决的保留问题 MainTableview 有两个部分 第1节 基于某些正则表达式过滤数据 第2节 All Data 我将 UISearchController 添加到我
  • 您将如何实现一个检测水平滑动以允许分页的 UITableView?

    我想实现一个 UITableView 一次显示 20 行 但考虑到我实际上可能要展示 120 个项目 我想使用某种分页来处理这个问题 使用前 20 项填充表 当用户从右向左滑动时 用接下来的 20 个项目重新加载 UITableView 从
  • 无法使用 Xamarin 和 WCF 访问 Web 服务

    我想使用 Xamarin 和 WCF 来使用公共 Web 服务 对于这个演示 我将使用Xamarin iOS 这是我试图使用的 公共 网络服务 http www webservicex net globalweather asmx WSDL
  • 为什么我的 tableView 函数运行了 3 次?

    我有一个 UITableView 并且有执行它所需的方法之一 func tableView tableView UITableView numberOfRowsInSection section Int gt Int println sec
  • 在 Swift 中自动移动 UISlider

    我想在按下按钮时将 UISlider 从 minValue 循环移动到 maxValue 并在再次按下按钮时将其停止在当前位置 我想使用 Swift 我遇到的主要问题是函数 slider setValue 太快了 我希望动画更慢 IBAct
  • 避免“在此块中强烈捕获自身可能会导致保留周期”消息

    每次我必须在块内使用全局变量或属性时 如下所示 self save if isItSaving NO self saveMyFile 我必须像这样重写 BOOL iis isItSaving id myself self self save
  • 线程 1:信号 SIGABRT - AppDelegate.h

    main m Journey Created by Julian Buscema on 2014 07 13 Copyright c 2014 Julian Buscema All rights reserved import
  • 混合静态和动态 UITableViewController 内容会导致 NSRangeException

    我一直在寻找这个错误 并找到了一些具有类似行为的帖子 但没有解决问题的解决方案 我有一个 UITableViewController 在 SB 中声明为静态 它具有以下部分 第 0 部分 配方 是静态的 有 4 个单元格 第 1 部分 口味
  • PrepareForSegue之谜

    我在两个不同的 VC 中有一个prepareForSegue 方法 一个使用一个if声明 而另一个旨在使用switch 除了名称之外 代码几乎相同 这个效果很好 void prepareForSegue UIStoryboardSegue
  • 重置转换后的 UIView 的原点会变得疯狂

    我使用 UIView transform 旋转 缩放 UIVIew 效果很好 然而 一旦我更改视图的框架原点 即使我没有执行任何进一步的 CGAffineTransforms 视图的内容也会开始 奇怪 地缩放 为什么会出现这种情况 我该如何
  • Xcode 3.1.4 中内置分析器

    我想知道 Xcode 3 1 4 中内置的分析器是否使得单独使用 LLVM Clang 静态分析器变得多余 请参考这里的原文 使用 LLVM Clang 静态分析器查找内存泄漏 http www fruitstandsoftware com
  • 自定义 MKAnnotationView - 如何捕获触摸而不忽略标注?

    我有一个自定义 MKAnnotationView 子类 它完全按照我想要的方式显示视图 在那个视图中 我有一个按钮 我想捕获按钮上的事件来执行操作 这很好用 但是 我不希望标注被忽略或消失 基本上 触摸标注中的按钮将开始播放声音 但我想保留
  • iOS7 中“-webkit-overflow-scrolling: touch” 最初的屏幕外元素被破坏

    既然转基因种子已经发布了 我们现在可以谈谈了 看起来 iOS7 中的 webkit overflow scrolling touch 已损坏 最初不在屏幕上的元素的触摸事件不会触发 或者在某些情况下只是不可靠 这是一个例子
  • 应用程序未通过协同设计验证?

    我在提交 iPhone 申请时遇到问题 我看到了一些类似的问题 但没有找到答案 当我存档项目并单击 验证 时 收到错误消息 应用程序未通过协同设计验证 签名无效 或者未使用 Apple 提交证书进行签名 我假设我在协同设计部分做错了什么 我
  • 退出导航控制器

    我试图离开初始视图控制器 并进入空白视图控制器 这很好 但是这会使空白视图控制器也成为导航控制器的一部分 这不是我想要的 我想脱离视图控制器 在视图控制器中 我尝试退出 它会自行弹出 当我尝试视图中的方法时 将出现目标视图控制器 self
  • UINavigationController 在 UITabBarController 的 moreNavigationController 中不起作用

    我正在处理UINavigationControllers在我的应用程序中 全部由UITabBarController 一切工作正常 直到我的控制器落入自动生成的 更多 选项卡 我在简单的示例中重现了该问题 难道我做错了什么 我想不通 感谢您

随机推荐

  • 在 python 中使用 subprocess.Popen 运行 java 主类

    我想执行java主类main java通过 python 使用subprocess Popen main java需要 3 个参数 我想知道该怎么做 例如我有一个HelloWorld java class public class Hell
  • Xamarin Forms 按钮中的 Android 资源名称

    Play 商店现在允许您指定要使用的预启动报告模拟器的凭据 为了让模拟器知道将凭据添加到哪个文本字段以及单击哪个按钮进行登录 它会询问文本字段和按钮的资源名称 Xamarin Form 的任何属性是否会转换为资源名称 我尝试查看 obj a
  • 使用异步管道到模板上的属性

    export class MyClass data MyData constructor private dataService DataService this dataService getData subscribe myData g
  • 二元运算符 / 不能应用于 Int 和 Double 类型的操作数 [重复]

    这个问题在这里已经有答案了 您好 对于 Swift 和一般编程新手来说 通过练习给出的代码正是 Playground noun a place where people can play import UIKit let height 12
  • 默认的“”边距有多宽?

    默认值是什么marginHTML为其设置的标签 我注意到有一些自动保证金 但我想知道是否有人知道它是多少 以及是否在px or etc 在大多数主流浏览器中 默认边距为8px在所有方面 它以像素为单位定义为user agent styles
  • 从支持的设备中删除 3G

    我正在尝试找出如何删除 AppStore 中我的应用程序支持的 iPhone 3G 设备 我向 Apple 支持人员发送了电子邮件 要求他们在 reqs 部分中更新它 他们回复说我需要更新我的 UIRequiredDeviceCapabil
  • 如何使用 fxml 在 javafx 中的文本字段上触发焦点事件?

    我在相关 fxml 的控制器类中有这个函数 我需要在焦点从文本字段中触发时触发此函数 但场景生成器没有类似于 onfocusout 的事件 如何使用控制类来实现这一点 FXML private void ValidateBikeNo Too
  • 无法使用 PERMISSIVE 模式保留 pyspark 中损坏的行

    我收到了一个 csv 文件 我需要在其中使用 pyspark 执行某些清理任务 在清理之前 我正在进行一些架构验证检查 下面是我的代码 schema for the input data def get input schema retur
  • 使用 SED 通过带有要删除的行号的索引来删除某些行

    我得到一个大文件 称之为 file txt 可能有 20000 行或更多 其中一些行必须从原始文件中删除 并且必须创建一个包含其余行的新文件 例如 newfile txt 要删除的行位于另一个文件中 例如index txt 所以我是这样的
  • 如何在 Django 中正确覆盖用户 admin

    我想添加内联模型并从 Django 管理中的用户更改表单中排除一些字段 我正在尝试覆盖 Django 的内置UserAdmin保留用户更改设计 class UserCustomAdmin UserAdmin list display id
  • SQL计算sys表中所有表的每一列中的所有空值

    我有以下 SQL SET NOCOUNT ON DECLARE Schema NVARCHAR 100 dbo DECLARE Table NVARCHAR 100 NULL DECLARE sql NVARCHAR MAX IF OBJE
  • 如何为 FormControls 创建自己的组件?

    我想创建一个表单并为其控件使用一个新的自定义组件 所以我创建了一个新组件并将其包含到父窗体中 但是 尽管父表单有一个 formGroup Angular 却抱怨它没有 错误 错误 formControlName 必须与父 formGroup
  • 在 OpenCV 中缩放通道的简单方法

    看来给定一个多通道图像img我不能做到这一点 img cv Scalar 1 5 0 5 2 1 我想按不同的比例缩放每个通道float factor 有没有一种简单的方法可以做到这一点 I could use cv transform 但
  • 可变 NSHTTPURLResponse 或 NSURLResponse

    我需要修改 NSURLResponse 中的响应标头 这可能吗 我刚刚和一个朋友正在谈论这个问题 我的建议是编写 NSURLResponse 的子类 沿着这些思路 interface MyHTTPURLResponse NSURLRespo
  • 如何使用 VBScript 移动鼠标

    我正在尝试使用 VBScript 移动鼠标 我尝试使用 Sendkeys CLICK LEFT x y 和发送密钥 MOVETO 10 20 但它不起作用我也尝试使用鼠标键 所以我可以用键盘移动它 因此使用Sendkeys激活它 但它也不起
  • 进度圆 - 在圆的末端画一个小圆弧 + 更多

    如何在进度圆的末端绘制一个小圆圈 并在其下方 上方添加一个小文本块 示例图片 div class radial progress div class circle div class img div div class mask full
  • PowerShell I与子类比较

    假设我们有这 3 个类 Class BaseClass System IComparable int Value BaseClass int v this Value v int CompareTo that If Not that is
  • Android:如何将标题置于工具栏中居中

    我是第一次在项目中使用ToolBar 所以我不知道如何在android中自定义工具栏 我需要将标题置于工具栏中央 请告诉我如何做到这一点 预先感谢 简单地在工具栏居中添加 TextView 的问题是在工具栏中添加菜单项 这会偏移居中的文本
  • 带大括号的 Sql 代理作业 SSIS 包参数值导致 SqlManager UI 出现错误

    我有一个 SSIS 包部署到 SSISDB 目录 该包可使用 FTP 详细信息等值的参数进行配置 我注意到 当任何参数值包含左大括号时 尝试为此包创建 SQL 代理作业会失败 不幸的是 密码参数之一包含左大括号 问题是 在不替换实际包中该字
  • IBAction 中跳过的用户界面命令

    这是我的代码 IBAction saveDownloadedImage NSLog Test EXECUTED indicatorView hidden NO NOT EXECUTED indicatorView startAnimatin