2012-02-27 12 views
5

Actualmente tengo un UITextField en una celda personalizada y quiero obtener la coordenada Y de ese UITextField en el nivel de la vista del controlador de vista (UIView). Actualmente estoy tratando de hacer algo como esto:Obtener coordenadas UITextField Y en el nivel UIView?

if (thetextField.superview.superview.superview.frame.origin.y >= keyboardY) { 

} 

pero parece que la coordenada Y es siempre 0, cuando en realidad no es. ¿Hay alguna forma de lograr esto?

Estoy haciendo esto porque quiero detectar si el UIKeyboard está bloqueando el UITextField en el nivel UIView para que pueda reorganizar mis celdas en consecuencia.

Gracias!

Respuesta

9

Comprueba convertPoint:* métodos en UIView documentation. Estos métodos le permiten asignar puntos ao desde otras coordenadas de vistas.

Siempre que self es un controlador de vista, esta línea devuelve el origen del campo de texto en vista de vista de controlador coordina:

[thetextField convertPoint:thetextField.frame.origin toView:self.view]; 

También puede convertir rectas de una manera similar utilizando métodos convertRect:*. Versión

+1

¡Impresionante! por cierto su frame.origin :) –

+0

Para mí esto funciona ... deja origenInSuperview: CGPoint = textField .convertPoint (CGPointZero, toView: self.view) print (originInSuperview) Esto es para .. –

0

Swift 3:

thetextField.convert(thetextField.frame.origin, to:self.view) 

Devuelve un CGPoint, para que pueda acceder a las propiedades de "Y" "x" o.

Cuestiones relacionadas