Проблемы с MFMessageComposeViewController в iOS8

Я столкнулся со странной ошибкой с MFMessageComposeViewController в iOS8, которая воспроизводится только в моем собственном приложении. Это влияет на приложение прямо сейчас в App Store, созданное с помощью iOS7 SDK, работающего на iOS8, а также с iOS8 SDK на моих собственных тестовых устройствах (iPhone и iPad).

Проблема в том, что когда я вызываю MFMessageComposeViewController, он показывает мне контроллер без текстового поля или кнопки «Отправить». Я не менял свой код между iOS7 и iOS8, поэтому не знаю, почему это происходит. Сам код очень прост:

MFMessageComposeViewController *picker = [[MFMessageComposeViewController alloc] init];
picker.messageComposeDelegate = self;
[picker setRecipients: @[@"5551112222"]];
[picker setBody: @"Test"];

[self presentViewController:picker animated:YES completion: ^{
    NSLog(@"MFMessageComposeViewController completion handler"); 
}];

Вот как это выглядит:

введите здесь описание изображения

Любые идеи о том, что я могу попробовать для обхода? Я попытался установить textField и получателей в обработчике завершения; попытался вызвать beFirstResponder на самом верхнем контроллере представления; не повезло. Опять же, это отлично работало/работает в iOS7.

РЕДАКТИРОВАТЬ:

Поэтому я нашел собственный пример кода Apple для MFMessageComposeViewController по этой ссылке: https://developer.apple.com/library/ios/samplecode/MessageComposer/Listings/MessageComposerViewController_m.html

Когда я создаю и запускаю это приложение, MFMessageComposeViewController отображается отлично, и предварительное заполнение номера телефона и текстовых полей также работает. Но когда я копирую их файлы в свое приложение, делаю их раскадровку своей основной раскадровкой, нажимаю кнопку «Создать SMS», и я вижу точно такую ​​же проблему!

Что здесь происходит? Очень смущенный. Может ли быть какая-то конфигурация в моем собственном приложении, которая мешает правильному отображению составителя сообщений?


person Z S    schedule 19.09.2014    source источник
comment
Вы обновили устройства до последней версии ios8? потому что этот тип ошибок есть в бета-версии ios8.   -  person Max    schedule 23.09.2014
comment
Да, это на моих собственных устройствах iOS8, а также на нескольких других пользователях моего приложения, которые используют небета-версии iOS8.   -  person Z S    schedule 23.09.2014


Ответы (1)


Наконец, после того, как я удалил большую часть своего приложения, я смог выяснить проблему. Оказывается, я переопределял системный метод UIViewController в категории (вместо подкласса):

@implementation UIViewController (UIViewController_Additions)
-(BOOL)canBecomeFirstResponder {
    return YES;
}

Это работало нормально до iOS7, но должно быть что-то изменилось внутри iOS8 и `MFMessageComposeViewController. Дело о «четырехлетнем халтурщике, пришедшем укусить вас за задницу»

Apple также не одобряет эту практику, согласно этой ссылке (хотя я не смог найти исходный источник Apple): https://stackoverflow.com/a/14259595/145552

person Z S    schedule 23.09.2014