MFMessageComposeViewController не отображает значок камеры - PullRequest
7 голосов
/ 20 марта 2012

Когда я выведу «Новое сообщение» вручную, я вижу значок камеры слева от области редактирования текста. Когда я использую MFMessageComposeViewController, он не будет отображать этот значок, что означает, что вы не можете вставлять изображения. Я знаю, что это можно сделать, потому что ребята, которые сделали txtAgif , могут это сделать. Одно тонкое отличие в том, что Caps включен. Это может быть ключом к пониманию того, как они заставляют это работать.

Я знаю, что MFMessageComposeViewController не позволяет программно вставлять изображения, и поэтому я делаю трюк с копированием в UIPasteboard. Эта часть отлично работает.

Этот же вопрос был задан здесь и здесь вопрос не получил ответа, за исключением вопроса "Это не может быть сделано".

Это мой первый пост, поэтому у меня не было достаточно высокого рейтинга, чтобы участвовать в постах других вопросов.

Как они это делают? Есть ли хитрость в MFMessageComposeViewController или они используют что-то совершенно другое?

Ответы [ 2 ]

4 голосов
/ 25 мая 2012

Я исправил это следующим кодом:

 UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];
           pasteboard.persistent = YES;
           NSString *imagefile =app.strimagepath;

           ///  
           BOOL fileExists = [[NSFileManager defaultManager] fileExistsAtPath:imagefile];

           if (fileExists)
           {    
               NSData *data = UIImagePNGRepresentation([UIImage imageWithContentsOfFile:imagefile]);
               pasteboard.image = [UIImage imageWithData:data];
           }
           NSString *phoneToCall = @"sms: 123-456-7890";
           NSString *phoneToCallEncoded = [phoneToCall stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding];
           NSURL *url = [[NSURL alloc] initWithString:phoneToCallEncoded];

           [[UIApplication sharedApplication] openURL:url];

Здесь app.strimgPath - это путь к изображению, хранящемуся в каталоге документов.когда MessageView открывается.Нажмите и удерживайте кнопку «Вставить», и сообщение будет вставлено.

3 голосов
/ 20 марта 2012

Я нашел ответ!Использование UIApplication sharedApplication для запуска пустого сообщения работает, а MFMessageComposeViewController - нет.Поскольку я использую UIPasteboard, мне не нужно вставлять элементы в тело.

    NSString *phoneToCall = @"sms: 123-456-7890";
    NSString *phoneToCallEncoded = [phoneToCall stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding];
    NSURL *url = [[NSURL alloc] initWithString:phoneToCallEncoded];

    [[UIApplication sharedApplication] openURL:url];

Это ошибка в MFMessageComposeViewController, потому что они позволяют вставлять изображения в одно, а не в другое.Я бы вставил изображение, но мне не разрешено, потому что у меня недостаточно репутации.

...