2012-02-19 4 views
15

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

-(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 при запуске приложения в симуляторе.

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

Я не мог найти что-либо в документах/Интернете относительно этого странного поведения.

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

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

ответ

23

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

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

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

+2

Если бета-версия сообщений установлена, 'canSendText' возвращает' YES', но просмотр станет черным и пустой (без содержимого). Если бета-версия сообщений удалена, 'canSendText' возвращает' NO'. Xcode 4.4 GM и iPhone 5.1 Simulator на льве. – Chris

+0

Любые исправления для этого еще? Эта ошибка сохраняется в Mac OS 10.8.2 с XCode 4.6.1. –

2

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

4

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

+0

У меня есть та же проблема, что и то, что ноль просматривается, но на моем тестовом устройстве даже работает iPhone 4, работающий под управлением iOS 5.1. – OscarTheGrouch

1

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

  • Mountain Lion
  • Xcode 4.4,
  • IOS 5,1
+0

У меня нет учетной записи iMessage, настроенной и включенной. –

0

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

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

Смежные вопросы