当键盘弹出时,如何停止tableView的滚动?

4
我有一个UITableViewController,其中每个单元格中都有一个位于顶部的UITextView。 当用户与该文本框交互时,自然会弹出键盘,并且同时随着键盘的出现,整个表格也会向上滚动,导致该文本框不再可见。
因为我已经启用了分页功能,所以在向上滚动后,表格将再次向下滚动,使该文本框处于视野中。
我想知道是否可以禁用键盘出现时的表格滚动,如果可以,如何实现?
2个回答

8

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

1) 可以使用UIViewController而不是UITableViewController - 自行设置数据源和委托

2) 覆盖viewWillAppear-Routine - 并且不要调用[super viewWillAppear:animated]

使用这两种解决方案,不仅可以禁用自动滚动,还会禁用一些其他好的但不是必需的特性,这些特性在Apple的类参考概述中有描述:http://developer.apple.com/library/ios/#documentation/uikit/reference/UITableViewController_Class/Reference/Reference.html


4
好的,我会尽力满足您的翻译需求。以下是需要翻译的内容:This answer is taken from here: https://dev59.com/T2kw5IYBdhLWcg3wzdtF#12010951 - Avario
我正在使用 UITableViewController,如果我不使用 supper.viewWillAppear() 函数,那么我的页脚就无法出现在键盘的顶部。我该怎么做才能让页脚视图停止自动滚动,并在编辑时将其放置在键盘的顶部? - Pushpendra

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;
}

Swift不起作用 ;( ,有什么想法?! - Mojtaba Yeganeh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接