Как настроить MFMailComposeViewController, чтобы я мог сделать поле to нередактируемым?

Я использую MFMailComposeViewController для отправки отзывов в своем приложении. Это работает нормально. Но проблема в том, что пользователь может редактировать/удалять адрес «кому». Я хочу сделать его нередактируемым. Возможно, пользователь может добавить несколько почтовых адресов в поле «Кому».

Но он не должен удалять адрес обратной связи (здесь это «[email protected]»).

Вот мой код...

MFMailComposeViewController *composeWindow = [[MFMailComposeViewController alloc] init];
composeWindow.mailComposeDelegate = self;

NSString *str = @"Subject of the feedback";
[composeWindow setSubject:[str stringByAppendingString:[[UIDevice currentDevice]systemVersion]]];

NSArray *toRecipients = [NSArray arrayWithObject: @"[email protected]"]; 
[composeWindow setToRecipients:toRecipients];

[self presentModalViewController:composeWindow animated:YES];
[composeWindow release];

Заранее спасибо

Раджкант


person Community    schedule 19.02.2011    source источник


Ответы (3)


Вы не можете настроить MFMailComposeViewController, чтобы избежать редактирования. Apple запрещает это, и причина довольно проста: именно пользователь, а не вы должны решать, что именно отправлять, кому и т. д. То же самое относится и к UI-контроллеру, позволяющему отправлять SMS (текстовые) сообщения. И, конечно же, Apple не разрешает отправлять электронное письмо или SMS без явного взаимодействия с пользователем. Это пользователь должен проверить и отправить электронное письмо или SMS-сообщение. Процесс проверки включает в себя возможность отменить сообщение или изменить любое отдельное свойство по желанию, включая получателей «кому».

person Massimo Cafaro    schedule 19.02.2011
comment
Спасибо за ваш подробный ответ. Я понял, что перед отправкой нашего интерфейса мы должны установить значения. Пользователь может изменять/удалять их по своему усмотрению. Но видите ли, я использовал этот контроллер ТОЛЬКО для отправки отзывов о моем приложении. Я не предоставляю почтовый сервис в своем приложении!!! Возможно, они хотят отправить копию отзыва кому-то. Но если они используют этот вариант обратной связи, я должен получить почту. Я не знаю, почему яблоко так делает!! В любом случае, большое спасибо... - person ; 19.02.2011

Все остальные ответы правильные. Вы не можете изменить интерфейс MFMailComposeViewController. Но у вас есть другие возможности. ;-)

Three20 SDK также включает Mail Composer. Попробуйте. Я думаю, что это должно быть настолько изменяемым, чтобы поле «Кому» больше не редактировалось.

Я надеюсь, что мой ответ будет полезен для вас.

Сандро Мейер

ИЗМЕНИТЬ

Three20 SDK был прекращен некоторое время назад. Поэтому вы не должны больше использовать его для новых проектов. Вместо этого я советую вам использовать NimbusKit. Это также рекомендуется командой Three20 SDK. К сожалению, он не включает MailComposeViewController.

person Sandro Meier    schedule 19.02.2011
comment
Спасибо большое.. Попробую - person ; 19.02.2011

Из документации Apple:

Важно: Сам интерфейс составления почты не настраивается и не должен изменяться вашим приложением. Кроме того, после представления интерфейса вашему приложению не разрешается вносить дальнейшие изменения в содержимое электронной почты. Пользователь по-прежнему может редактировать содержимое с помощью интерфейса, но программные изменения игнорируются. Таким образом, вы должны установить значения полей содержимого перед представлением интерфейса.

person iHS    schedule 19.02.2011