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

我试着在按下按钮后立即拨打-[UIButton setSelected:YES](在我的网络操作完成后,我会相应地拨打-[UIButton setSelected:NO]),但它似乎没有任何作用.如果我打setHighlighted:也一样.

我想我可以try 换出背景图像来表示网络操作期间的选定状态,但这似乎是一种攻击.有什么更好的建议吗?

下面是我的代码:

- (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];

如果您在按钮按下事件上设置选定状态,而不是在内部进行touch ,则您的按钮实际上将处于高亮显示+选定状态,因此您也需要设置该状态.

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

编辑:

要总结我在 comments 中的 comments ,并解决您发布的代码……您需要为您所处的全部UIControl个州设置您的背景图片.根据您的代码片段,在网络操作期间,此控件状态将为禁用+选中+突出显示.这意味着您需要执行以下操作:

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

如果移除highlighted = YES,则需要:

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

明白了吗?

Ios相关问答推荐

RN 0.63支持iOS ProMotion?

什么是最好的方式使用DateFormatters在可扩展视图cellForRowAt方法

在Android和iOS上从后台恢复应用程序后,inappwebview上出现白屏?

如何在react 本机模块中使用Bundle.main.Path()在SWIFT中导入assets资源

在许多UIButton中对齐文本,即使SF Symbols(或其他图像)具有不同的宽度?

我应该使用哪个UIButton发送事件在SWIFT上刷卡?

Swift-如何通过Case Let访问模型变量

如何在 Swift 中存储具有关联值的协议?

如何结合`@dynamicMemberLookup`和`ExpressibleByStringInterpolation`来实现方法链?

Swift Vision库识别文本后如何将其赋值给 struct 体实例属性以供显示?

Flutter动画放大图

查找东南亚语言(泰语、高棉语、老挝语、缅甸语)中的单词边界

我无法使用 Swift 将文件上传到 firebase

在 Swift 中使用 UITesting 捕获屏幕录像

构建失败:ld:重复符号 _OBJC_CLASS_$_Algebra5FirstViewController

如何从一个特定的视图控制器中隐藏导航栏

由于 NSInvalidUnarchiveOperationException 导致 iOS11 WKWebview 崩溃

自动布局:是什么创建了名为 UIView-Encapsulated-Layout-Width & Height 的约束?

NSURL 到带有 XCTest 的测试包中的文件路径

我可以在 UIScrollView 中使用 UIRefreshControl 吗?