2012-02-27 66 views
5

目前我在自定義單元格中有一個UITextField,我想要在視圖控制器視圖(UIView)的級別上獲取該UITextField的Y座標。目前我正在嘗試做這樣的事情:在UIView級別獲取UITextField Y座標?

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

} 

但是看起來Y座標總是爲0,而實際上並不是這樣。有什麼辦法可以做到這一點?

我這樣做是因爲我想檢測UIKeyboard是否阻止UIView級別上的UITextField,以便我可以相應地重新排列我的單元格。

謝謝!

回答

9

UIView documentation中檢查convertPoint:*方法。這些方法允許您將點指向或從其他視圖座標映射。

只要self是一個視圖控制器,此行返回文本字段中的視圖控制器的視圖原點座標:

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

你也可以轉換rects使用convertRect:*方法類似的方式。

+1

太棒了! btw其frame.origin :) – 2012-02-28 02:19:31

+0

對我來說,這是工作..讓originInSuperview:CGPoint = textField .convertPoint(CGPointZero,toView:self.view) print(originInSuperview)這是用於swift .. – 2016-06-22 12:37:21

0

斯威夫特3版本:

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

它返回一個CGPoint,這樣你就可以訪問 「X」 或 「Y」 屬性。