代码之家  ›  专栏  ›  技术社区  ›  Steve Weller

如何使iPhone键盘在上升时不可见?

  •  4
  • Steve Weller  · 技术社区  · 17 年前

    当我的iPhone应用程序启动时,主屏幕上有一个键盘。目前,只要显示界面的其余部分,键盘就会升起,这在视觉上会分散注意力。

    如何在键盘已打开的情况下显示视图?

    因为我已经在启动过程中伪造了一些屏幕的其他部分,以便用户看到他们最后在做什么,所以我想我也可以伪造键盘。但是,如果当真正的键盘出现时,运动在那里,我就失去了效果。据我所知,键盘位于一个单独的窗口上,而不仅仅是一个单独的视图,所以我不能用自己的图像覆盖它。

    3 回复  |  直到 17 年前
        1
  •  5
  •   dmercredi    17 年前

    如果是动画过渡,我的原始答案将键盘与视图控制器一起设置动画(即按下视图控制器或使用动画:是显示模式控制器)。但是,如果显示的新视图控制器没有动画过渡,则键盘仍会在中设置动画,因此无法解决问题。

    这是另一种在我的测试中有效的方法。在显示控制器+键盘时尝试禁用动画。

    [UIWindow beginAnimations: nil context: NULL];
    [UIWindow setAnimationsEnabled: NO];
    
    RestoredController *controller = [[[RestoredController alloc] init] autorelease];
    [self.navigationController pushViewController: controller animated: NO];
    
    [UIWindow commitAnimations];
    

        2
  •  0
  •   dmercredi    17 年前

    在ViewWillDisplay:,确保已加载视图(通过self.view),并将第一响应者设置为正确的字段。这将在视图实际显示时完全显示键盘,而不是在中设置动画。

    例如:

    - (void) viewWillAppear: (BOOL) animated {
      [super viewWillAppear:animated];
    
      NSString *storedID = [[NSUserDefaults standardUserDefaults] stringForKey:@"storedID"];
      if ([storedID length] > 0) {
        idField.text = storedEmail;
        [passwordField becomeFirstResponder];
      } else {
        [idField becomeFirstResponder];
      }
    }
    
        3
  •  0
  •   Steve Weller    17 年前

    不是答案,但这里有一些代码。

    -(void)viewWillAppear:(BOOL)animated;
    {
    [super viewWillAppear:animated];
    
    // Start with the text from the currently edited message
    NSString *startString = self.messageManager.editingMessage.text;
    // start string processing omitted
    self.editingMessageEditingView.text = startString;
    
    if([self showingMessageList]) {
        [self.editingMessageEditingView resignFirstResponder];
    } else {
    #if DEFAULT_SCREEN==1
        [[self.tools.items objectAtIndex:kPVToolBarItemDelete] setEnabled:NO];
        [[self.tools.items objectAtIndex:kPVToolBarItemSendLater] setEnabled:NO];
    #else
        [self.editingMessageEditingView becomeFirstResponder];
    #endif
    }
    
    推荐文章