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

iPhone SDK:处理键盘外观

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

    [[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 回复  |  直到 16 年前
        1
  •  1
  •   Ben S    16 年前

    添加a BOOL 属性或实例变量: careAboutKeyboard 这对你们俩来说都是可以访问的 keyboardWasShown: keywardWasHidden:

    将其设置为 YES viewWillAppear 方法,并设置为 NO 当您显示邮件视图时 viewWillDisappear .

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

    if(careAboutKeyboard) {
        // Scrolling logic
    }