У меня стандартная реализация MFMailComposeViewController.MFMailComposeViewController didFinishWithResult проблема при появлении клавиатуры
Я установил правильные протоколы делегатов и проверил журнал, используя метод didFinishWithResult.
См:
mailComposer = [[MFMailComposeViewController alloc] init];
[mailComposer setSubject:emailTitle];
[mailComposer setMessageBody:messageBody isHTML:YES];
mailComposer.mailComposeDelegate = self;
[[self getController] presentViewController:mailComposer animated:YES completion:NULL];
- (void) mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error
{
NSLog(@"mail dismiss");
[[self getController] dismissViewControllerAnimated:YES completion:NULL];
}
Это показывает почты композитор правильно, и все работает хорошо. Смысл, если я нажму кнопку «Отменить», вызывается метод didFinishWithResult и рассылка mailComposer.
Однако, если я пытаюсь ввести что-либо, например, TO: адрес электронной почты или что-то еще в самом почтовом композиторе, кажется, что клавиатура, которая появляется, удаляет действия делегата моего контроллера представления, поскольку «отменить "и" отправить "кнопки не активируют никаких действий.
Любые мысли? Это сводит меня с ума:/
Приветствия
EDIT
Вот код getController:
- (UIViewController *) getController
{
Class vcc = [UIViewController class];
UIResponder *responder = self;
while ((responder = [responder nextResponder]))
if ([responder isKindOfClass: vcc])
return (UIViewController *)responder;
return nil;
}
Что именно является '[само getController]' делать? –
@ DanielStorm - он получает текущий контроллер представления, так как я делаю это из UIView. Я обновил код выше, чтобы показать этот метод. – Andre
Просто выстрел в темноте, но есть ли шанс, что ваш presentViewController вызывается из потока, отличного от основного потока? –