MFMessageComposeViewController на Simulator - canSendText?

следующая ситуация: я хочу отправить SMS приложения. Это мой код, создающий MFMessageComposeViewController:

-(void) showMessageComposerWithText:(NSString*)messageText telNumber:(NSString*)telNumber composeDelegate:(id)delegate
{
    MFMessageComposeViewController *controller = [[MFMessageComposeViewController alloc] init];
    if([MFMessageComposeViewController canSendText])
    {   
        controller.body = messageText;
        controller.recipients = [NSArray arrayWithObject:telNumber];
        controller.messageComposeDelegate = delegate;

        [delegate presentModalViewController:controller animated:YES];
    }
}

Поэтому я думаю, что это прямолинейно. При тестировании в Simulator я получаю следующее исключение: Application tried to push a nil view controller on target <MFMessageComposeViewController: 0x8a4e090>. Мне также интересно, почему [MFMessageComposeViewController canSendText] возвращает YES при запуске приложения в симуляторе.

При работе на устройстве все работает правильно.

Я не мог найти ничего в docs/web относительно этого странного поведения.

Я запускаю Xcode 4.3 в OS 10.7.3, целью развертывания является iOS 5.0.

Спасибо заранее, tubtub

Ответы

Ответ 1

Эта проблема возникает, когда вы устанавливаете бета-версию сообщений на OS X Lion.

Изменить: это также происходит на Mountain Lion, когда есть учетная запись iMessage, настроенная и разрешенная. Если учетная запись отключена, она работает правильно (canSendText возвращает NO).

Совет. Если вы используете controller.modalTransitionStyle = UIModalTransitionStylePartialCurl, вы можете вернуться в Симулятор, нажав на скрученную "страницу" в верхнем левом углу.

Ответ 2

Симулятор должен всегда возвращать NO из canSendText, это не относится к iOS 5.0 и 5.1 симуляторам. С Xcode 4.2 он разбился, на Xcode 4.3 он просто толкает контроллер представления nil.

Ответ 3

Я вижу то же самое. Я думаю, что это ошибка в симуляторе iOS 5 с Xcode 4.3. canSendText корректно возвращает NO в симуляторе iOS 4.3. Тот же код отлично работает на устройстве.

Ответ 4

В этой конфигурации canSendText корректно возвращает NO в симуляторе (плюс, UIAlertView, похоже, говорит, что текстовые сообщения недоступны):

  • Горный лев
  • Xcode 4.4,
  • iOS 5.1

Ответ 5

Получение такой же ошибки. Im на OSX 10.8.5 с XCode 5.0 (5A1413).

Попробовал перейти на разные типы симуляторов (iPhone, iPad), но результаты остались прежними. Также попытался отключить учетную запись в Сообщения, но безрезультатно.