创建一个固定的 UITextField - Obj C

Posted

技术标签:

【中文标题】创建一个固定的 UITextField - Obj C【英文标题】:Creating a fixed UITextField - Obj C 【发布时间】:2015-01-16 18:33:09 【问题描述】:

我有一个填充单元格的tablview。单击单元格时,我会务实地填充textfields 我的问题是如何获取y 坐标,以便我可以根据用户当前在边界内的位置定位UITextField?或者让我将UITextField 设置为固定位置,这样如果您在表格视图中向下滚动,UITextField 将始终保持在同一个位置。

我不介意任何一种选择,但最好的方法是什么?

更新:

好的,这就是我要问的。当您使用单元格填充tablview 并且它超出屏幕物理查看范围时,您会向下滚动以查看其他单元格,对吗?所以如果我使用:

float width = [[UIScreen mainScreen] bounds].size.width;
self.cardnameTextField = [[UITextField alloc] initWithFrame:CGRectMake(0, 0, width, 25)];

0 = y 位置。所以它将填充在我的UiTableview 顶部的0,0 位置,该位置将位于UITableView 的最左上角。现在我要问的是,假设我向下滚动以选择一个超出物理屏幕范围的cell,并且我选择了cell,它将填充UITextFieldUITableView 的最左上角0,0 而不是物理屏幕的最左上角。如何获取物理屏幕y 坐标,以便我可以定位UITextField,以便用户始终看到它。

【问题讨论】:

我很难理解你在这个问题中要求的是什么。你能以某种方式形象化它吗? @ianmacdonald 好吧,假设您正在查看一个包含 20 个单元格的表格。您在屏幕上向下滚动以查看所有单元格是否正确?好吧,当您单击列表底部的一个单元格时,您将位于 y 坐标的下方。我的问题是,您如何获得与用户在屏幕上看到的内容一致的 y 坐标。 您可以使用[UIView convertRect:fromView] 将坐标从单元格视图转换为视图控制器的视图空间,但可能有更好的方法来获得最终结果。你能画出你打算将这些UITextFields 用于什么以及它们应该出现在哪里的图片吗? @IanMacDonald 请检查更新 【参考方案1】:

好的,我刚刚想通了。

因此,当您执行[self.viewaddSubview:self.cardnameTextField]; 时,这会将其定位在UITableView 内,我不必找到实际屏幕最顶部位置的y 坐标。但是,如果我运行 [self.view.window addSubview:self.cardnameTextField];,它会将其设置为实际的 window,从而使其具有与 position:fixed; 几乎相同的 CSS 功能,这正是我想要的。

【讨论】:

是的。您需要阅读视图层次结构以更好地理解这一点。 @IanMacDonald 是的,以牺牲我的代表为代价发现了这一点【参考方案2】:

即使有你的评论,也不是很清楚你在问什么。

如果您要问如何将单元格的位置转换为屏幕坐标,这很容易。 UIView 有一整套将坐标从一个视图的坐标系转换到另一个视图的方法。只要 2 个视图是同一视图层次结构的一部分,它们就可以工作。您可以将单元格的 contentView.bounds.origin (将在内容视图的坐标系中)将位置转换为视图控制器内容视图的坐标系:

CGPoint cellOrigin = cell.contentView.bounds.origin;

cellOrigin = [self.view convertPoint: cellOrigin fromView: cell.contentView];

上面的代码会给你一个单元格原点的坐标,在视图控制器的内容视图的坐标中。

如果这不是您要问的,那么您需要更新您的问题以明确您要问什么。

【讨论】:

谁对我投了反对票,为什么?我尽我所能根据我能理解的来回答(非常模糊的)问题。我想我的理解错了,但这不是我的错……

以上是关于创建一个固定的 UITextField - Obj C的主要内容,如果未能解决你的问题,请参考以下文章

iOS数组排序

UITEXTFIELD 无?

OBJ-C:核心绘图 XY 轴固定

滚动时 UITextField 上的值更改

自动调整大小时 UITextField 字体粗细变化

如果 UITextField 已经创建,不要在 Tap 上重新创建 UITextField