当键盘出现时,如何阻止 tableView 滚动? [复制]

Posted

技术标签:

【中文标题】当键盘出现时,如何阻止 tableView 滚动? [复制]【英文标题】:How do I stop a tableView from scrolling when the keyboard appears? [duplicate] 【发布时间】:2014-03-17 05:35:46 【问题描述】:

我有一个 UITableViewController,每个都包含一个 UITextView 位于每个单元格顶部的单元格。 自然地,当与 textBox 的交互开始时,键盘会出现,同时整个表格也会随着键盘的出现而向上滚动,从而导致 textBox 消失。

因为我已经为我的 tableView 启用了分页,所以在向上滚动后它会再次向下滚动以便 textBox 在视图中。

我想知道是否可以在键盘出现时禁用表格滚动,如果可以,如何?

【问题讨论】:

【参考方案1】:

自动滚动行为位于 UITableViewCONTROLLER 功能中。要禁用自动滚动,我找到了两种方法:

1) 使用 UIViewController 代替 UITableViewController - 自行设置数据源和委托

2) 覆盖 viewWillAppear-Routine - 并且不要调用 [super viewWillAppear: animated] 使用这两种解决方案,您不仅可以禁用 Autoscroll,还可以禁用其他一些不错但不是

基本功能,在 Apple 的类参考概述中描述:http://developer.apple.com/library/ios/#documentation/uikit/reference/UITableViewController_Class/Reference/Reference.html

【讨论】:

这个答案取自这里:***.com/a/12010951/1751778 我正在使用UITableViewController,如果我不使用supper.viewWillApper() 函数,那么我的页脚不会出现在keyBoard 的顶部,我该怎么办Means i want to stop auto scrolling and want footer view on the top of keyboard while editing【参考方案2】:

我们可以通过多种方式禁用 tableview 滚动。

1) 在 textView 委托方法中

- (void)textViewDidBeginEditing:(UITextView *)textView
           tableView.scrollEnabled = NO;



- (void)textViewDidEndEditing:(UITextView *)textView
 tableView.scrollEnabled = YES;

2) 键盘通知

- (void)viewWillAppear:(BOOL)animated
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) 
                                             name:UIKeyboardWillShowNotification object:self.view.window];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) 
                                             name:UIKeyboardWillHideNotification object:self.view.window];


- (void)viewWillDisappear:(BOOL)animated 
    // unregister for keyboard notifications while not visible.
    [[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillShowNotification object:nil];
    [[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillHideNotification object:nil];

- (void)keyboardWillShow:(NSNotification *)notif 
    tableView.scrollEnabled = NO;


- (void)keyboardWillHide:(NSNotification *)notif 
    tableView.scrollEnabled = YES;

【讨论】:

不能快速工作 ;(,有什么想法吗?!

以上是关于当键盘出现时,如何阻止 tableView 滚动? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

当键盘出现iOS时向上滚动tableview行

tableview 中的两个 TextFields,都在滚动视图上,当键盘出现 iPhone 时消失

出现键盘时滚动 Group tableView

如何将 TableView 单元格滚动到屏幕键盘之外?

UITableView 增加 contentInset 底部不滚动

如何阻止 UITableview 一次滚动多个单元格