Я уже встречал несколько вопросов, например this но из-за отсутствия принятого ответа, а также из-за того, что все было реализовано по мере необходимости, я все еще сталкиваюсь со следующей проблемой: я отображаю почтовый композитор, но при нажатии кнопки «Отмена» вид композитора зависает. Я думаю, это связано с тем, что лист черновика «Сохранить / удалить» отображается вне видимого фрейма. Да, я установил mailComposeDelegate на контроллер представления представления и прочитал несколько похожих вопросов, где пользователь не обработал делегат (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error
, чтобы уволить композитора при отмене. Я тоже справился с этим, но, похоже, я не могу понять, почему лист действий не отображается в видимой области экрана в версии моего универсального приложения для iPhone. Рамка представления контроллера представления, модально представляющего составителя почты как NSLogged, составляет (0,0,320,480). Мое приложение универсально, и составитель почты отлично работает на iPad. Ниже приведен снимок экрана, как выглядит представление композитора, работающее на iPhone Simulator 5.1: -
Вот код для отображения композитора:
-(IBAction)mailButtonPressed:(id)sender {
MFMailComposeViewController *controller = [[MFMailComposeViewController alloc] init];
controller.mailComposeDelegate = self;
[controller setSubject:@"Subject"];
[controller setMessageBody:@"Test" isHTML:YES];
[controller setToRecipients:nil];
if(controller) {
[self presentModalViewController:controller animated:YES];
[controller release];
}
}
- (void)mailComposeController:(MFMailComposeViewController*)controller
didFinishWithResult:(MFMailComposeResult)result
error:(NSError*)error
{
[self dismissModalViewControllerAnimated:YES];
}
po [[UIApp keyWindow] recursiveDescription]
. Скопируйте результат и вставьте его в свой вопрос. - person rob mayoff   schedule 23.12.2012mailer.delegate = self;
вместоmailer.mailComposeDelegate = self;
и действительно имел неправильное определение делегата. Теперь код на обоих iPhone работает нормально. Нет затемненных представлений; все отклоняет, как ожидалось. Я начал пробовать с приложением для iPhone, и это было нормально. Я переключил его на универсальное приложение, работающее на iPhone, и это тоже было нормально. - person emrys57   schedule 24.12.2012application:didFinishLaunchingWithOptions:
с помощьюself.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
- person Felix   schedule 24.12.2012UIActionSheet
метода? Есть ли шанс, что ваш код думает, что это iPad, и пытается открыть лист действий, даже если это iPhone? - person Warif Akhand Rishi   schedule 27.12.2012