Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get UITextField Y coordinate on UIView level?

Currently I have a UITextField in a custom cell and I want to get the Y coordinate of that UITextField on the level of the View Controller's view (UIView). Currently I am trying to do something like this:

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

}

But it seems that the Y coordinate is always 0 when it is in fact not. Is there any way to achieve this?

I am doing this because I want to detect whether the UIKeyboard is blocking the UITextField on the UIView level so that I can re-arrange my cells accordingly.

Thanks!

like image 801
SimplyKiwi Avatar asked Feb 27 '12 23:02

SimplyKiwi


2 Answers

Check convertPoint:* methods in UIView documentation. These methods allow you to map point to or from other views coordinates.

Provided that self is a view controller, this line returns text field's origin in view controller's view coordinates:

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

You can also convert rects in a similar fashion using convertRect:* methods.

like image 198
ayoy Avatar answered Oct 28 '22 22:10

ayoy


Swift 3 version:

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

It returns a CGPoint, so you can access "x" or "y" properties.

like image 36
smukamuka Avatar answered Oct 28 '22 23:10

smukamuka