gpt4 book ai didi

objective-c - 防止 UITableView 滚动到包含 textField 的单元格

转载 作者:太空狗 更新时间:2023-10-30 03:38:31 25 4
gpt4 key购买 nike

UITableView 似乎有一些自动行为,如果单元格包含 textField 或 textView,并且该字段或 View 成为第一响应者,tableView 会自行滚动,这样单元格就不会被键盘遮挡。我敢肯定,在大多数情况下,这非常方便。

就我而言,这是不好的。 tableView 在一个较小的 containerView 中,默认行为使字段仍然模糊。我想自己处理整个容器的移动,默认的滚动行为妨碍了我。

有谁知道如何“关闭”UITableView 的这个功能?

最佳答案

我遇到了完全相同的问题,我在较小的容器 View 中有一个 UITableView,当我在 tableView 中选择一个 UITextField 时,它会自动滚动到一个不需要的位置。这是 UITableView 的默认行为,似乎没有任何方法可以将其关闭。

相反,我将此 subview Controller 更改为 UIViewController 的子类,而不是 UITableViewController。即对于我控制 tableView 的 TransportViewController.h:

@interface TransportViewController : UITableViewController <UITextFieldDelegate>

变成了:

@interface TransportViewController : UIViewController <UITextFieldDelegate, UITableViewDataSource, UITableViewDelegate>

通过将类设置为 UIViewController 类,表格单元格的自动滚动将不会发生。

既然您没有子类化 UITableViewController,您现在必须手动设置“tableView”属性以指向适当的 TableView 。你可以在 IB 中连接它,它会给你类似的东西:

@property (strong, nonatomic) IBOutlet UITableView *tableView;

最后,您还必须将这个新分配的 tableView 属性设置为表的委托(delegate)和数据源。您可以像这样在“viewDidLoad”方法中执行此操作:

- (void)viewDidLoad
{
[super viewDidLoad];

_tableView.dataSource = self;
_tableView.delegate = self;

}

这将停止在选择 UITextField 时 UITableViewController 中固有的自动滚动。然后由您来实现任何必要的 UITableViewDataSource 方法,并处理您自己的自动滚动方法。

关于objective-c - 防止 UITableView 滚动到包含 textField 的单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16131873/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com