0

我目前正在编写一个主要由表单组成的应用程序。为了完成这项工作,我使用带有 UITableViewController 的静态单元格,它可以包含 UITextField 和 UITextView。如果您使用该语言的默认配置,则一切正常。但是对于 UITextView,弱点是你不能隐藏键盘,因为点击返回键会跳转到下一行。所以我放了一个工具栏来启用关闭键盘功能(在键盘上使用 NSNotification)。但是当它滚动到包含文本字段的单元格时,该字段被工具栏隐藏,滚动不会添加工具栏的高度。截图:点击字段 https://dl.dropbox.com/u/9858108/tableViewIssue1.jpg 之前点击 字段 https ://dl.dropbox 之后。

任何人都有一个神奇的代码片段来做到这一点?

4

1 回答 1

1

A.,谢谢你的提示,我修改了代码,现在它可以工作了。这是工作代码:

/**
 * Cette méthode affiche la toolbar pour terminer l'adition quand le clavier est affiché
 *
 * @param NSNotification notification Notification de l'émetteur
 */
- (void)keyboardWillShow:(NSNotification *)notification {
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:0.3];

    CGRect frame = self.toolbarAction.frame;
    frame.origin.y = self.parentViewController.view.frame.size.height - 260.0;
    self.toolbarAction.frame = frame;

    // Cette portion de code permet de remonter le scroll (à cause de la toolbar)
    if (![[AppKit sharedInstance] isIPad]) {
        CGRect tableFrame = self.tableView.frame;
        tableFrame.origin.y = tableFrame.origin.y - 50;
        self.tableView.frame = tableFrame;
    }

    [UIView commitAnimations];

    // Action pour les keyboards
    self.toolbarDoneButton.tag = 1;
}

/**
 * Cette méthode cache la toolbar lorsque le clavier n'est plus affiché
 *
 * @param NSNotification notification Notification de l'émetteur
 */
- (void)keyboardWillHide:(NSNotification *)notification {
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:0.3];

    CGRect frame = self.toolbarAction.frame; 
    frame.origin.y = self.parentViewController.view.frame.size.height;
    self.toolbarAction.frame = frame;

    // Cette portion de code permet de rebaisser le scroll (à cause de la toolbar)
    if (![[AppKit sharedInstance] isIPad]) {
        CGRect tableFrame = self.tableView.frame;
        tableFrame.origin.y = tableFrame.origin.y + 50;
        self.tableView.frame = tableFrame;
    }

    [UIView commitAnimations];
}

解决这个问题的有趣部分是:

CGRect tableFrame = self.tableView.frame;
tableFrame.origin.y = tableFrame.origin.y - 50;
self.tableView.frame = tableFrame;
于 2012-07-17T07:51:43.603 回答