这是UI ......(我知道它很难看......)橙色是一个视图,蓝色是表格,灰色是表格单元格,最后,红色是一个文本字段表格单元格。我的问题很简单,我只是想知道红色文字字段的位置......似乎表格单元格可能会上下移动,因此,位置可以改变。所以,我不需要动态更新文本字段位置,我只需要在用户点击文本字段时的位置,任何想法?感谢。
答案 0 :(得分:4)
您可以使用可在UIView或其派生类
上使用的convetrPoint方法- (CGPoint)convertPoint:(CGPoint)point toView:(UIView *)view
- (CGPoint)convertPoint:(CGPoint)point fromView:(UIView *)view
在你的情况下,你需要这样做:
- (void)textFieldDidBeginEditing(UITextField *)textField
{
CGPoint textFieldOriginInTableView = [textFiled convertPoint:textField.frame.origin toView:tableView];
//or if you want it relative to the orangeView, your toView should be the orangeView
}
答案 1 :(得分:1)
我想提一下:
如果你的textField在tabelViewCell里面,无论单元格上升或下降多少,它的位置总是相同的。这是因为textField是tabelViewCell的子视图而不是视图。
您可以通过以下几种方式获得:
在textFieldDidBeginEditing
委托方法上(正如您所提到的,触摸时需要它,意味着开始编辑)。
或者您希望通过以下代码:
//您可以设置文本字段的标记
UITableViewCell *cell = [yourTableView cellForrowAtIndexPath:yourCellIndexPath];
UITextField *textField = (UITextField *)[cell.contentView viewWithTag:textFieldTag];
//或者不想设置Tag,只有textfield存在
for (UIView *v in [cell.contentView subviews]) {
if ([v isKindOfClass:[UITextField class]]) {
UITextField *textField = (UITextField *)v;
}
}
答案 2 :(得分:0)
假设拥有的视图控制器是UITextField的委托,您可以实现textFieldDidBeginEditing:方法并获取文本字段的框架,如下所示:
- (void)textFieldDidBeginEditing(UITextField *)textField
{
CGRect rect = textField.frame;
}
答案 3 :(得分:0)
此动画代码设置框架尝试此代码...
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.2];
CGRect youtTextFielfFrame = textField.frame;// get position of textfield from this code
[textField setFrame:CGRectMake(textField.frame.origin.x - 50, textField.frame.origin.y,textField.frame.size.width,textField.frame.size.height)]; /// set frame which you want here......
[UIView commitAnimations];
return YES;
}
答案 4 :(得分:0)
首先在textField
中添加一个唯一标记yourTextField.tag = 1001;
在您想要textField位置的位置,只需执行
UITextField *myTextField = [cell viewWithTag:1001];
CGRect textFieldRect = myTextField.Frame;
它将为您提供标记的textField的框架,其中包含textField相对于其superView的x,y,width,height参数。