用户单击按钮后,我希望在执行网络操作期间该按钮保持按下状态。当网络操作完成后,我希望按钮返回到默认状态。
我试过打电话-[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
在按钮上?您是否设置背景图片UIControlStateHighlighted
也UIControlStateSelected
?
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(使用前将#替换为@)