代码之家  ›  专栏  ›  技术社区  ›  leon

iphonesdk:处理keybaord外观

  •  0
  • leon  · 技术社区  · 15 年前

    当键盘出现时,我需要移动视图控制器的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创建键盘时,我应该做什么来避免键盘上的反应?

    1 回复  |  直到 15 年前
        1
  •  1
  •   Ben S    15 年前

    BOOL 属性或实例变量: careAboutKeyboard keyboardWasShown: keywardWasHidden: 方法,这些方法可能位于视图控制器中。

    设置为 YES 当在 viewWillAppear 方法,并设置为 NO viewWillDisappear .

    然后将所有滚动逻辑放入if块:

    if(careAboutKeyboard) {
        // Scrolling logic
    }