创建一个固定的 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
,它将填充UITextField
在UITableView
的最左上角0,0
而不是物理屏幕的最左上角。如何获取物理屏幕y
坐标,以便我可以定位UITextField
,以便用户始终看到它。
【问题讨论】:
我很难理解你在这个问题中要求的是什么。你能以某种方式形象化它吗? @ianmacdonald 好吧,假设您正在查看一个包含 20 个单元格的表格。您在屏幕上向下滚动以查看所有单元格是否正确?好吧,当您单击列表底部的一个单元格时,您将位于 y 坐标的下方。我的问题是,您如何获得与用户在屏幕上看到的内容一致的 y 坐标。 您可以使用[UIView convertRect:fromView]
将坐标从单元格视图转换为视图控制器的视图空间,但可能有更好的方法来获得最终结果。你能画出你打算将这些UITextField
s 用于什么以及它们应该出现在哪里的图片吗?
@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的主要内容,如果未能解决你的问题,请参考以下文章