创建一个固定的 UITextField - Obj C
Creating a fixed UITextField - Obj C
我有一个 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
的最左上角。现在我要问的是,假设我向下滚动到超出物理屏幕范围的 select 一个 cell
,然后我 select 编辑了 cell
,它将填充UITextField
在 UITableView
0,0
的最左上角,而不是物理屏幕的最左上角。我如何获得物理屏幕 y
坐标,以便我可以定位 UITextField
以便用户始终看到它。
即使有你的评论,也不是很清楚你在问什么。
如果您问的是如何将单元格的位置转换为屏幕坐标,这很简单。 UIView 有一整套方法,用于将坐标从一个视图的坐标系转换到另一个视图的坐标系。只要 2 个视图是同一视图层次结构的一部分,它们就可以工作。您可能会使用单元格的 contentView.bounds.origin(它将位于内容视图的坐标系中)将位置转换为视图控制器内容视图的坐标系:
CGPoint cellOrigin = cell.contentView.bounds.origin;
cellOrigin = [self.view convertPoint: cellOrigin fromView: cell.contentView];
上面的代码会在视图控制器的内容视图的坐标中为您提供单元格原点的坐标。
如果这不是您要问的,那么您将需要更新您的问题以明确您要问的是什么。
好的,我刚刚弄明白了。
因此,当您执行 [self.viewaddSubview:self.cardnameTextField];
时,这会将其定位在 UITableView
内,我将不得不找到实际屏幕最顶部位置的 y
坐标。但是如果我 运行 [self.view.window addSubview:self.cardnameTextField];
它将它设置为实际的 window
给它几乎 CSS
的功能 position:fixed;
这正是我正在寻找的。
我有一个 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
的最左上角。现在我要问的是,假设我向下滚动到超出物理屏幕范围的 select 一个 cell
,然后我 select 编辑了 cell
,它将填充UITextField
在 UITableView
0,0
的最左上角,而不是物理屏幕的最左上角。我如何获得物理屏幕 y
坐标,以便我可以定位 UITextField
以便用户始终看到它。
即使有你的评论,也不是很清楚你在问什么。
如果您问的是如何将单元格的位置转换为屏幕坐标,这很简单。 UIView 有一整套方法,用于将坐标从一个视图的坐标系转换到另一个视图的坐标系。只要 2 个视图是同一视图层次结构的一部分,它们就可以工作。您可能会使用单元格的 contentView.bounds.origin(它将位于内容视图的坐标系中)将位置转换为视图控制器内容视图的坐标系:
CGPoint cellOrigin = cell.contentView.bounds.origin;
cellOrigin = [self.view convertPoint: cellOrigin fromView: cell.contentView];
上面的代码会在视图控制器的内容视图的坐标中为您提供单元格原点的坐标。
如果这不是您要问的,那么您将需要更新您的问题以明确您要问的是什么。
好的,我刚刚弄明白了。
因此,当您执行 [self.viewaddSubview:self.cardnameTextField];
时,这会将其定位在 UITableView
内,我将不得不找到实际屏幕最顶部位置的 y
坐标。但是如果我 运行 [self.view.window addSubview:self.cardnameTextField];
它将它设置为实际的 window
给它几乎 CSS
的功能 position:fixed;
这正是我正在寻找的。