我在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
相对于UIScreen
或UITableView/UIViewController
的{{1}}相对于UITableViewCell
的y位置?
答案 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)
希望这会有所帮助。