У меня этот код хорошо работает в течение нескольких месяцев (на iOS 5.1), но я долго не проверял его, и теперь (вероятно, проблема с iOS 6.0) я заметил, что мой MFMailComposeViewController не показывает клавиатуру, даже когда фокусировка на текстовых полях, таких как тело сообщения или получатели.
Странно то, что он реагирует на нажатия, поэтому я могу установить курсор на «Кому» или «Тема», и курсор появится, или я могу удерживать нажатие, чтобы всплыло зум-стекло. Но без клавиатуры :(
57_45_PM.png" rel="nofollow">СКРИНШОТ ЭТОГО
Вот код, который я использую:
MFMailComposeViewController *mailer = [[MFMailComposeViewController alloc] init];
mailer.mailComposeDelegate = self;
[self presentModalViewController:mailer animated:YES];
Я много искал об этом и нашел что-то, что касается[self resignFirstResponder]
или [mailer becomeFirstResponder]
, но это не сработало.
Если я добавлю этот код до или после представления контроллера
NSLog(@"mailer become %d", [mailer canBecomeFirstResponder]);
Он показывает 0
, однако,
NSLog(@"self resign %d", [self resignFirstResponder]);
показывает 1
, но до того, как я добавил
- (BOOL)canResignFirstResponder {
return YES;
}
Документы говорят, что по умолчанию он должен возвращать YES
, так что это вдвойне странно.
Если я создаю пустой проект с таким кодом, он работает хорошо, но я не могу этого сделать, потому что мой текущий проект довольно огромен. Любая помощь будет оценена по достоинству, застряв здесь...
Протестировано как на iPhone, так и на симуляторе iOS (обе цели развертывания 5.1 и 6.0)
canBecomeFirstResponder
,canResignFirstResponder
,becomeFirstResponder
иresignFirstResponder
, вам нужно найти то, что сделано неправильно, и исправить это. Например, вы можете прекратить использовать устаревший код и заменить его наpresentViewController:animated:completion:
. - person A-Live   schedule 13.12.2012[[NSThread currentThread] isMainThread]
). - person A-Live   schedule 13.12.2012MFMailComposeViewController
? - person A-Live   schedule 13.12.2012