MFMessageComposeViewController не отображает значок камеры

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

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

Этот же вопрос был задан здесь и здесь на вопрос не был дан ответ, кроме за «Это невозможно».

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

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


person whatchamacallit    schedule 19.03.2012    source источник


Ответы (2)


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

 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. Длительно нажмите и нажмите «Вставить», и сообщение будет вставлено.

person Prerna    schedule 25.05.2012
comment
Вы только добавляете копирование в буфер обмена. Ключ к ответу на мой вопрос заключается в том, что вы должны использовать UIApplication для запуска представления сообщений. Теперь опубликуйте пример с использованием MFMessageComposeViewController, который работает. Это не так, если Apple не обновит этот класс. - person whatchamacallit; 05.06.2012
comment
когда вы не видите кнопку камеры или не можете вставить, просто попробуйте добавить действительный идентификатор сообщения получателя, и он активирует значок камеры, а также позволит вам вставить изображение. - person Prerna; 05.06.2012

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

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

    [[UIApplication sharedApplication] openURL:url];

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

person whatchamacallit    schedule 20.03.2012
comment
теперь, если ваша репутация повысилась... пожалуйста, вставьте изображение - person KDeogharkar; 15.05.2012
comment
Вам все еще нужна помощь с этим kdeo_16? - person whatchamacallit; 05.06.2012
comment
нет нет, я уже пробовал это, и это работает... я пробовал, я думаю, за 2 недели до того, как дождался вашего ответа - person KDeogharkar; 05.06.2012
comment
Есть ли способ инициализировать то, что говорится в сообщении, аналогично тому, какой номер для текста? Таким образом, вы можете вставить в сообщение что-то вроде вставки изображения сюда? - person Boeckm; 09.06.2012
comment
@Boeckm: я точно знаю, о чем ты говоришь. К сожалению, я мог добавить сообщение только с помощью «MFMessageComposeViewController». - person whatchamacallit; 26.06.2012