当键盘出现时,我需要移动视图控制器的UI元素。为此,我在我的应用程序代理中注册键盘通知:
[[NSNotificationCenter defaultCenter] addObserver:observer
selector:@selector(keyboardWasShown:)
name:UIKeyboardDidShowNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:observer
selector:@selector(keyboardWasHidden:)
name:UIKeyboardDidHideNotification object:nil];
然后按照苹果的规定处理通知(我有类似的键盘代码),上下滚动视图:
- (void)keyboardWasHidden:(NSNotification*)aNotification
{
CGRect viewFrame = [self.view frame];
viewFrame.origin.y += keyboardSize.height - TOOLBAR_HEIGHT;
self.view.frame = viewFrame;
}
到现在为止,一直都还不错。现在,问题描述:
MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];
picker.mailComposeDelegate = self;
[self presentModalViewController:picker animated:YES];
当键盘显示在实际的邮件UI中时,我仍然会收到键盘通知,滚动我的视图,从而破坏我的UI(请注意,邮件控制器占据整个屏幕,此时甚至看不到我的视图)。
[[NSNotificationCenter defaultCenter] removeObserver:self];
但这并没有帮助,键盘甚至仍然会被贴上。
当由消息UI创建键盘时,我应该做什么来避免键盘上的反应?