我有这个完全相同的问题,我不得不在较小的容器视图一个UITableView,当我在的tableView选择的UITextField它会自动滚动到不期望的位置。这是UITableView的默认行为,似乎没有任何方法将其关闭。
相反,我改变了这种子视图控制器是一个UIViewController的一个子类,而不是一个UITableViewController。即我TransportViewController.h其控制的tableView:
@interface TransportViewController : UITableViewController <UITextFieldDelegate>
变成了:
@interface TransportViewController : UIViewController <UITextFieldDelegate, UITableViewDataSource, UITableViewDelegate>
通过设置类作为UIViewController类代替,表格单元格自动滚动将不会发生。
现在,你是不是子类的UITableViewController现在必须手动设置“的tableView”属性设置为指向相应的表视图。您可以在IB连接此,这将给你是这样的:
@property (strong, nonatomic) IBOutlet UITableView *tableView;
最后你还必须设置这个新分配的tableView属性是表的委托和数据源。您可以在“viewDidLoad中”的方法做到这一点,像这样:
- (void)viewDidLoad
{
[super viewDidLoad];
_tableView.dataSource = self;
_tableView.delegate = self;
}
这将停止自动滚动选择的UITextField时是在固有的UITableViewController。然后由你来实现任何必要的UITableViewDataSource方法,并处理你自己的自动滚动方法。
来源
2013-10-09 04:41:08
Tys
看看这个问题http://stackoverflow.com/questions/4585718/disable-uiscrollview-scrolling-when-uitextfield-becomes-first-responder – 2013-04-21 14:01:48
我不能肯定是否是因为它是一个UITableView,而不是直接的UIScrollView,或者是因为这些解决方案是一个较旧的SDK下提出的,但没有在该职位中提出的解决方案为我工作。对于每个解决方案,我的TableView仍然自动滚动。 – 2013-04-21 16:07:23
[本答案](http://stackoverflow.com/a/32313035/4482870)(矿)描述了该问题的相当简单的解决方案。 – tonso 2015-08-31 14:02:44