iPhone下一个UITextField

发布于 2024-09-25 10:45:59 字数 446 浏览 1 评论 0原文

我有一个带有分组样式的 UITableView 的应用程序。每个单元格上都有一个带有描述的 UILabel 和一个供用户输入数据的 UITextField

我们在键盘顶部实现了一个工具栏,其中包含下一个和上一个按钮(类似于 MobileSafari 在填写表单时提供的功能)。为了将焦点集中到下一个字段,我们使用带有连续数字的标签属性,并通过标签找到子视图。

我们无法使用响应者链,因为所有文本字段都有不同的父视图(它们的 UITableViewCell)。

但是,使用 iPhone 模拟器时,键盘上的 Tab 键(和 Shift-Tab)会按预期工作,并将焦点移动到下一个或上一个文本字段,无论它位于视图层次结构中的哪个位置。看到之后,我们确信一定有一个 API 可以为我们提供所需的功能,但我们找不到它。有什么提示吗?

I have an application with a UITableView with grouped style. On each of the cells, there is a UILabel with a description, and a UITextField for the user to enter data.

We implemented a toolbar on top of the keyboard, with next and prev buttons (similar to what MobileSafari provides when filling forms). In order to give focus to the next field, we resorted to using the tag attribute with consecutive numbers, and we find the subview by tag.

We can't use the responder chain because all the textfields have a different parent view (their UITableViewCell).

However, when using the iPhone Simulator, the Tab key on the keyboard (and Shift-Tab) work as expected and will move the focus to the next or prev textfield, regardless on where it is in the view hierarchy. After seeing that, we are sure there must be an API that provides us the required functionality, but we could not find it. Any hints?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

剑心龙吟 2024-10-02 10:45:59

我不确定您到底想实现什么功能。

但是,我怀疑您会感兴趣的是,您可以按如下方式从单元格访问控制器:

UITableView *myTableView = (UITableView *)self.superview;
NSIndexPath *indexPath = [myTableView indexPathForCell: self];
MyTableViewController *myTableViewController = (MyTableViewController *)(myTableView.delegate);

一旦您向控制器发送消息,它就可以使用 cellForRowAtIndexPath 访问所需的任何单元格。

I'm not sure exactly what functionality you are trying to implement.

However, I suspect it will be of interest to you that you can access the controller from the cells as follows:

UITableView *myTableView = (UITableView *)self.superview;
NSIndexPath *indexPath = [myTableView indexPathForCell: self];
MyTableViewController *myTableViewController = (MyTableViewController *)(myTableView.delegate);

Once you have messaged the controller, it in turn can access whatever cell is desired with cellForRowAtIndexPath.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文