我正在向服务器发送一个返回字符串的帖子请求,该字符串表示如果用户存在或不具有该昵称,则帖子通知无瑕疵,并在完成处理程序内部打印出1s以下的返回结果,但是根据返回的结果设置图像还需要17到20个......
以下是我正在使用的代码:
- (void)textFieldDidBeginEditing:(UITextField *)textField{
// for each textfield selected checkl previous text field formating
if (textField == registerEmailAddressTextField)
{
//check if nickname is at least 6 charactes
if (registerNicknameTextField.text.length < 6) {
NSLog(@"EMIAL TEXT FIELD");
[registerNicknameCheckmarkLabel setImage:[UIImage imageNamed:@"wrong_checkmark.png"]];
}else{
NSLog(@"checking nickname");
//check if nickname exists or not
NSURL *url = [NSURL URLWithString:@"myURL"];
//Create the session with custom configuration
NSURLSessionConfiguration *sessionConfiguration = [NSURLSessionConfiguration defaultSessionConfiguration];
NSURLSession *session = [NSURLSession sessionWithConfiguration:sessionConfiguration];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url];
request.HTTPMethod = @"POST";
NSError *error = nil;
NSString* str = [NSString stringWithFormat:@"username=%@", registerNicknameTextField.text];
NSData* jsonData = [str dataUsingEncoding:NSUTF8StringEncoding];
[request setValue:[NSString stringWithFormat:@"%d", (int)registerNicknameTextField.text.length] forHTTPHeaderField:@"Content-Length"];
if (!error) {
NSURLSessionUploadTask *uploadTask = [session uploadTaskWithRequest:request
fromData:jsonData completionHandler:^(NSData *data,NSURLResponse *response,NSError *error) {
NSString *responseString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSString* result2 = [responseString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
NSString *secondString = [result2 stringByReplacingOccurrencesOfString:@" " withString:@""];
if ([secondString isEqualToString:@"exist"]) {
NSLog(@"nickname allready exists");
[registerNicknameCheckmarkLabel setImage:[UIImage imageNamed:@"wrong_checkmark.png"]];
}else{
[registerNicknameCheckmarkLabel setImage:[UIImage imageNamed:@"correct_checkmark.png"]];
NSLog(@"nickname doesn't exists");
}
}];
[uploadTask resume];
}
}
}
}
我甚至尝试使用这些代码强行刷新屏幕没有成功:
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW,
(int64_t)(0.005 * NSEC_PER_SEC));
dispatch_after(popTime, dispatch_get_main_queue(), ^(void) {
[self.view setNeedsDisplay];
});
答案 0 :(得分:0)
正如@dan所建议的那样,我把所有东西放在主队列上:
dispatch_async(dispatch_get_main_queue(), ^{
if ([secondString isEqualToString:@"exist"]) {
[registerNicknameCheckmarkLabel setImage:[UIImage
imageNamed:@"wrong_checkmark.png"]];
}else{
[registerNicknameCheckmarkLabel setImage:[UIImage
imageNamed:@"correct_checkmark.png"]];
}
});