Проблема с потоками UIKeyboardTaskQueueIOS

Программируем под IOS
Ответить
Anonymous
 Проблема с потоками UIKeyboardTaskQueue

Сообщение Anonymous »

Я новичок в разработке для iOS и уже давно застрял в этой ошибке. Я делаю простое приложение, использующее веб-сервис. Прямо сейчас у меня есть два контроллера представления. Контроллер представления входа в систему (с его файлом NIB) и контроллер основного представления (с его файлом NIB). Когда я создавал приложение, я выбрал пустое приложение, поэтому у меня нет раскадровки. Вместо этого я использую UINavigationController. Когда я запускаю свой код, я получаю следующую ошибку после ввода имени пользователя и пароля и нажатия кнопки «Отправить» в окне входа в систему:

Код: Выделить всё

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '-[UIKeyboardTaskQueue waitUntilAllTasksAreFinished] may only be called from the main thread.'
Это код для моей кнопки отправки:

Код: Выделить всё

-(IBAction)logIn:(id)sender{
UIApplication *application = [UIApplication sharedApplication];
application.networkActivityIndicatorVisible = YES;

[_loginNetworkingContorller checkCredentialsWithUsername:self.username.text withPassword:self.password.text completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
if(!error){
NSHTTPURLResponse *httpResp = (NSHTTPURLResponse*) response;
if (httpResp.statusCode == 200) {
NSLog(@"SUCESS");
NSDictionary *credentials = @{self.username.text: self.password.text};
[KeychainUserPass save:@"MY APP" data:credentials];
UIViewController *mainView = [[RDMainViewController alloc] initWithNibName:@"RDMainViewController" bundle:nil];

[self.navigationController pushViewController:mainView animated:YES];
}
else{
NSLog(@"ERROR");
}
}
else{
NSLog(@"ERROR");
}
}];
}
А вот код следующей функции

Код: Выделить всё

[_loginNetworkingContorller checkCredentialsWithUsername:self.username.text withPassword:self.password.text completionHandler:^(NSData *data, NSURLResponse *response, NSError *error)

-(void)checkCredentialsWithUsername:(NSString *)username withPassword:(NSString *)password completionHandler:(void (^)(NSData *data,NSURLResponse *response, NSError *error))myCompletion
{
NSString *requestString = @"SOME WEBSITE";
NSURL *url = [NSURL URLWithString:requestString];
NSURLRequest *req = [NSURLRequest requestWithURL:url];

NSData *userPasswordData = [[NSString stringWithFormat:@"%@:%@", username, password] dataUsingEncoding:NSUTF8StringEncoding];
NSString *base64EncodedCredential = [userPasswordData base64EncodedStringWithOptions:0];
NSString *authString = [NSString stringWithFormat:@"Basic %@", base64EncodedCredential];

NSURLSessionConfiguration *sessionConfig=[NSURLSessionConfiguration defaultSessionConfiguration];
sessionConfig.HTTPAdditionalHeaders=@{@"Authorization":authString};

self.session=[NSURLSession sessionWithConfiguration:sessionConfig];

NSURLSessionDataTask *dataTask = [self.session dataTaskWithRequest:req completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
myCompletion(data, response, error);
}];

[dataTask resume];
}
Я сейчас застрял и не совсем понимаю, в чем проблема, тем более что я ничего не делаю с клавиатурой. У меня такое ощущение, что с моими блоками возникла проблема, но я не совсем уверен, в чем именно. Любая помощь будет принята с благодарностью.

Подробнее здесь: https://stackoverflow.com/questions/243 ... ding-issue
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»