触摸后保持 UIButton 处于选中状态

2024-01-06

用户单击按钮后,我希望在执行网络操作期间该按钮保持按下状态。当网络操作完成后,我希望按钮返回到默认状态。

我试过打电话-[UIButton setSelected:YES]按下按钮后(相应地调用 -[UIButton setSelected:NO]在我的网络操作完成后)但它似乎没有做任何事情。如果我打电话也是一样setHighlighted:.

我想我可以尝试更换背景图像来表示网络操作期间的选定状态,但这似乎是一种黑客行为。还有更好的建议吗?

我的代码如下所示:

- (IBAction)checkInButtonPushed
{
    self.checkInButton.enabled = NO;
    self.checkInButton.selected = YES;
    self.checkInButton.highlighted = YES;
    [self.checkInActivityIndicatorView startAnimating];
    [CheckInOperation startWithPlace:self.place delegate:self];
}

- (void)checkInCompletedWithNewFeedItem:(FeedItem*)newFeedItem wasNewPlace:(BOOL)newPlace possibleError:(NSError*)error;
{
    [self.checkInActivityIndicatorView stopAnimating];
    self.checkInButton.enabled = YES;
    self.checkInButton.selected = NO;
    self.checkInButton.highlighted = NO;
}

您如何设置不同的图像UIControlStates在按钮上?您是否设置背景图片UIControlStateHighlightedUIControlStateSelected?

UIImage *someImage = [UIImage imageNamed:@"SomeResource.png"];
[button setBackgroundImage:someImage forState:UIControlStateHighlighted];
[button setBackgroundImage:someImage forState:UIControlStateSelected];

如果您在按钮触摸事件上设置选定状态而不是在内部触摸,则您的按钮实际上将处于突出显示+选定状态,因此您也需要进行设置。

[button setBackgroundImage:someImage forState:(UIControlStateHighlighted|UIControlStateSelected)];

Edit:

为了总结我在评论中的评论并解决您发布的代码......您需要设置完整的背景图像UIControl根据您的代码片段,在网络操作期间,此控制状态将被禁用+选择+突出显示。这意味着您需要执行以下操作:

[button setBackgroundImage:someImage forState:(UIControlStateDisabled|UIControlStateHighlighted|UIControlStateSelected)];

如果您删除highlighted = YES,那么你需要这个:

[button setBackgroundImage:someImage forState:(UIControlStateDisabled|UIControlStateSelected)];

得到图片了吗?

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

触摸后保持 UIButton 处于选中状态 的相关文章

随机推荐

  • 在旧版 .NET 平台上使用 .NET Core 包

    我正在使用 VS 中的新 类库 包 模板之一创建 NuGet 包 我想知道 有什么方法可以使用 PCL 中的包吗 not使用 NET Core 例如 我有一个包裹 Enu 具有以下project json title Enu project
  • 调用 Tumblr 帖子转发 api 时收到 401(未授权)

    我在调用 Tumblr 帖子转发 api 时收到 401 状态 其他 tumblr api 工作正常 我关注了 Stackoverflow 的一些链接 但无法使用它 当尝试发布到 tumblr 博客时不断收到 401 https stack
  • ArrayObject, getIterator();

    我试图理解什么getIterator 是的 我将解释 我所知getIterator是我们调用以包含外部迭代器的方法 问题是 getIterator 包含它有自己的方法关闭认为看起来相同的是迭代器接口 但它不能是一个接口 它可以是类 但我试图
  • 使用 Swiftmailer 发送多个附件

    我正在创建一个允许上传多个文件的表单 然后将表单字段值和附件通过电子邮件发送到特定地址 我正在使用 Swiftmailer 生成这些电子邮件 我知道如何使用 Swiftmailer 附加一个文件 但不知道如何附加多个文件 有谁知道使用 Sw
  • UIWebView 未使用 ARC 释放所有活动字节

    我目前正在 iOS 5 1 中构建一个使用 ARC 的导航控制器应用程序 我经常需要显示网页 我制作了一个 Web 查看器 它只是一个 UIWebView 两侧有一些自定义内容 当用户看完页面后 他们点击后退按钮 这将释放与自定义 Web
  • 查找多个重叠矩形的并集 - OpenCV python

    我有几个包含单个对象的重叠边界框 但它们在某些地方重叠最少 作为一个整体 它们包含了整个对象 但是 openCV 的 groupRectangles 函数不会返回包含该对象的框 我拥有的边界框以蓝色显示 我想要返回的边界框在这里以红色显示
  • C#:当存在多个类型参数时,为什么泛型类型推断不起作用?

    这是两个示例 这工作正常 void Main var list Queryable ProjectTo typeof Projection public static class QueryableExtensions public sta
  • 负载均衡器后面的 SilverStripe

    我有一个 SilverStripe 实例在 AWS 负载均衡器后面的两台服务器上运行 为了共享会话信息 我正在运行 Elasticache Redis 服务器 我将我的 php 会话存储信息设置为 ini set session save
  • 使用 JavaScript 将 JSON 文件转换为 CSV

    我正在尝试使用 JavaScript 将 JSON 文件转换为可以在 Excel 中打开的 csv 我拥有的 function exportToCsv filename rows var processRow function row va
  • 如何调试 Node.JS 子进程?

    我正在尝试调试使用以下命令创建的子 Node JS 进程 var child require child process child fork dirname task js 问题是 当在 IntelliJ WebStorm 中运行时 父进
  • 未捕获的类型错误:dispatcher.useSyncExternalStore 不是函数

    我正在尝试使用 useSelector 和 useDispatch 更改 bulma 模型的状态像这样 const isState useSelector state gt state isActiveState Model js 是 im
  • GTK 程序运行时如何禁用屏幕保护程序/电源管理/屏幕消隐?

    问题 有没有办法阻止 X 会话启动屏幕保护程序 进入省电模式或通过代码执行屏幕空白 我正在做什么 语言 C C 图形用户界面框架 GTK3 硬件 树莓派3B 软件 Raspbian 10 Buster 我的程序需要在屏幕上长时间运行 最多
  • 如何对数据库依赖行为进行单元测试 C#

    我有一个与数据库通信的 C 应用程序 我想测试一些依赖于数据库的功能 所以我想确保数据库在每次测试运行之前都有一个初始状态 我使用 NUnit 来测试我的应用程序 有什么方法可以恢复DB的初始状态 感谢您的帮助 您不对与数据库的交互进行单元
  • Blazor WASM 启动时加载初始数据的最佳位置在哪里

    我正在构建 Blazor 应用程序 需要在应用程序启动时加载一些初始数据 以便我可以将数据放入 CascadingPerameter 中以供其他组件使用 我想知道调用服务来读取此数据的最佳位置在哪里 一般来说 您应该使用服务来获取数据 服务
  • 根据 ASP.NET MVC 中的控制器属性向视图模型添加错误消息

    我的控制器上有一个用于授权的自定义属性 其详细信息可以是在这里查看 https stackoverflow com questions 4342271 asp net mvc forms authorization with active
  • 使用 Flask-Script / Python 从标准输入读取

    现在我有flask script 命令 它将路径作为参数 然后从路径中读取 manager option f file dest file path def my command file path open file path 我希望它也
  • 如何制作动态选项菜单?

    问题是按下菜单按钮时会调用一次以下方法 public boolean onCreateOptionsMenu Menu menu 如何稍后重新创建菜单以更改某些选项 禁用某些选项等 覆盖这个 onPrepareOptionsMenu 菜单菜
  • 发送带有多个附件的电子邮件

    我正在尝试发送一封包含多个附件的电子邮件 Intent emailIntent new Intent Intent ACTION SEND MULTIPLE emailIntent putExtra Intent EXTRA EMAIL n
  • 使用python smtplib发送邮件错误

    我正在尝试使用 python 3 2 SMTPlib sendmail 函数 对 SMTP 库进行一些修改后 即 注释掉抑制错误消息的 rset 函数 我设法从服务器检索到以下错误消息 发送邮件失败 554 b 交易失败 由于可能滥用 无法
  • 触摸后保持 UIButton 处于选中状态

    用户单击按钮后 我希望在执行网络操作期间该按钮保持按下状态 当网络操作完成后 我希望按钮返回到默认状态 我试过打电话 UIButton setSelected YES 按下按钮后 相应地调用 UIButton setSelected NO