这真令人沮丧,我搜索了很多都无济于事。
我有一个按钮。按下该按钮时,它将调用执行网络操作的方法(NSURLRequest)。
该按钮应执行以下操作:
问题是在整个请求中,按钮均处于突出显示/按下状态。我已附上我目前在下面的代码。
对于按钮:
[myButton setBackgroundImage:[UIImage imageNamed:@"defaultbutton"] forState:UIControlStateNormal];
[myButton setBackgroundImage:[UIImage imageNamed:@"pressedbutton"] forState:UIControlStateHighlighted];
[myButton setBackgroundImage:[UIImage imageNamed:@"disabledbutton"] forState:(UIControlStateDisabled|UIControlStateSelected)];
[squishButton addTarget:self action:@selector(reqMethod) forControlEvents:UIControlEventTouchUpInside];
在请求开始的方法中:
-(void)reqMethod {
NSLog(@"Starting request..");
[myButton setHighlighted:NO];
[myButton setEnabled:NO];
[myButton setSelected:YES];
请求完成后,它会隐藏普通按钮并显示可以正常工作的重置按钮。
最佳答案
您应该对多线程文档有所了解。
http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/Multithreading/Introduction/Introduction.html
如果您需要一段代码,我认为这可能很有用
[myButton setBackgroundImage:[UIImage imageNamed:@"defaultbutton"] forState:UIControlStateNormal];
[myButton setBackgroundImage:[UIImage imageNamed:@"pressedbutton"] forState:UIControlStateHighlighted];
[myButton setBackgroundImage:[UIImage imageNamed:@"disabledbutton"] forState:(UIControlStateDisabled|UIControlStateSelected)];
[squishButton addTarget:self action:@selector(reqMethod) forControlEvents:UIControlEventTouchUpInside];
dispatch_async(dispatch_get_global_queue(0, 0),
^{
//Your request
dispatch_async(dispatch_get_main_queue(),
^{
NSLog(@"Starting request..");
[myButton setHighlighted:NO];
[myButton setEnabled:NO];
[myButton setSelected:YES];
});
});