Мне нужно переместить элементы интерфейса моего контроллера вида, когда появляется клавиатура. Я делаю это, регистрируясь для уведомлений клавиатуры в моем делегате приложения:
[[NSNotificationCenter defaultCenter] addObserver:observer
selector:@selector(keyboardWasShown:)
name:UIKeyboardDidShowNotification object:nil];</p>
<pre><code>[[NSNotificationCenter defaultCenter] addObserver:observer
selector:@selector(keyboardWasHidden:)
name:UIKeyboardDidHideNotification object:nil];
, а затем обработка уведомлений, как предписано Apple (у меня был похожий код для клавиатуры, был показан), чтобы прокрутить представление вверх и вниз:
- (void)keyboardWasHidden:(NSNotification*)aNotification
{
CGRect viewFrame = [self.view frame];
viewFrame.origin.y += keyboardSize.height - TOOLBAR_HEIGHT;
self.view.frame = viewFrame;
}
Все идет нормально. Теперь описание проблемы:
Когда я выполняю этот код, чтобы показать пользовательский интерфейс сообщения для OS 3.0:
MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];
picker.mailComposeDelegate = self;
[self presentModalViewController:picker animated:YES];
и когда клавиатура отображается в реальном почтовом интерфейсе, я по-прежнему получаю уведомление клавиатуры, которое прокручивает мое представление и, следовательно, нарушает мой пользовательский интерфейс (обратите внимание, что почтовый контроллер занимает весь экран, и мое представление даже не видно в этой точке).
Я надеялся временно отключить уведомление клавиатуры, чтобы мой код прокрутки не вызывался с этой строкой:
[[NSNotificationCenter defaultCenter] removeObserver:self];
Но это не помогает, клавиатура даже все равно выкладывается.
Что я должен делать, чтобы не реагировать на клавиатуру, когда она создается пользовательским интерфейсом сообщения?