我目前正在编写一个主要由表单组成的应用程序。 为了完成这项工作,我正在使用带有UITableViewController的静态单元格,它可以包含UITextField和UITextView。 如果您使用的是语言的默认配置,那么一切都运行得相当不错。 但是对于UITextView来说,弱点是你无法隐藏键盘,因为在返回键上点击将跳转到下一行。 所以我放了一个工具栏来启用解除键盘功能(在键盘上使用NSNotification)。 但是当它滚动到包含文本字段的单元格时,该字段被工具栏隐藏,滚动不会添加工具栏的高度。 截图: 在点击该字段之前 https://dl.dropbox.com/u/9858108/tableViewIssue1.jpg 点击该字段后 https://dl.dropbox.com/u/9858108/tableViewIssue2.jpg
任何人都有一个神奇的代码片段可以解决这个问题吗?
答案 0 :(得分: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;