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!

有帮助吗?

解决方案

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.

其他提示

Swift 3 version:

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top