2012-02-27 13 views
5

वर्तमान में मेरे पास एक कस्टम सेल में UITextField है और मैं व्यू कंट्रोलर के दृश्य (UIView) के स्तर पर उस UITextField के वाई समन्वय प्राप्त करना चाहता हूं। वर्तमान में मैं इस तरह कुछ करने के लिए कोशिश कर रहा हूँ: जब यह वास्तव में नहींUIViewField वाई समन्वय UIView स्तर पर प्राप्त करें?

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

} 

लेकिन ऐसा लगता है कि वाई समन्वय हमेशा 0 है। क्या इसे प्राप्त करने का कोई तरीका है?

मैं ऐसा इसलिए कर रहा हूं क्योंकि मैं यह जानना चाहता हूं कि UIKeyboard UIView स्तर पर UITextField को अवरुद्ध कर रहा है ताकि मैं तदनुसार अपनी कोशिकाओं को फिर से व्यवस्थित कर सकूं।

धन्यवाद!

उत्तर

9

UIView documentation में विधियों की जांच करें। ये विधियां आपको अन्य विचार निर्देशांक से या उससे बिंदु को मैप करने की अनुमति देती हैं।

बशर्ते कि self एक दृश्य नियंत्रक है, इस लाइन रिटर्न दृश्य नियंत्रक के दृश्य में पाठ क्षेत्र के मूल निर्देशांक:

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

तुम भी इसी तरह convertRect:* तरीकों का उपयोग कर में rects बदल सकते हैं।

+1

बहुत बढ़िया! btw its frame.origin :) –

+0

मेरे लिए यह काम किया गया है .. उत्पत्ति इंसर्व्यूव: CGPoint = textField .convertPoint (CGPointZero, toView: self.view) प्रिंट (origInSuperview) यह तेज़ के लिए है .. –

0

स्विफ्ट 3 संस्करण:

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

यह तो आप "एक्स" या "वाई" गुण का उपयोग कर सकते रिटर्न एक CGPoint,।

संबंधित मुद्दे