如何获得UITextField相对于UIScreen的原点y位置?

时间:2018-08-12 04:51:44

标签: ios swift uitableview

我在UITextFields中有很多UITableViewCell(xib)

UITableView也有许多UITableViewCell(xib)所有不同的样式。

class CustomTableViewCell: UITableViewCell {

@IBOutlet weak var fieldOne: UITextField!
@IBOutlet weak var fieldTwo: UITextField!
@IBOutlet weak var fieldThree: UITextField!
@IBOutlet weak var fieldFour: UITextField!
.
.
.
@IBOutlet weak var fieldTwelve: UITextField!

func textFieldDidBeginEditing(_ textField: UITextField) {
        //how to get Origin Y position relative to UIScreen or UITableView/UIViewController?


    }
}

如何快速获得UITextField相对于UIScreenUITableView/UIViewController的{​​{1}}相对于UITableViewCell的y位置?

2 个答案:

答案 0 :(得分:3)

您可以使用UIView的func convert(_ point: CGPoint, to view: UIView?) -> CGPoint方法。 UITextField当然是UIView的子类。

要相对于窗口转换原点(0,0),请传递nil:

textField.convert(CGPoint.zero, to: nil)

相对于TableView:

textField.convert(CGPoint.zero, to: tableView)

您可以在单元格中添加一个方法。您可以在表格视图中调用此方法,并将表格视图作为参数传递。

func convertTextFieldOriginToView(_ view: UIView) -> CGPoint {
    return textField.convert(CGPoint.zero, to: view)
}

答案 1 :(得分:1)

请尝试以下代码以获取UITableView的相对位置。

let pointInTable = textField.superview?.convert(textField.frame.origin, to: self.table)

希望这会有所帮助。