2010-03-11 5 views
16

काम नहीं कर रहा प्रतीत होता है मेरे पास कस्टम टेबलसेल व्यू के साथ एक टेबल व्यू है जिसमें UILabels और UIButtons हैं। जब बटन में से एक टेप किया जाता है, तो मैं बटन के टेक्स्ट का वर्णन करने वाला "टूलटिप" दिखाना चाहता हूं।कन्वर्टपॉइंट: toView:

अधिकांश सब कुछ काम कर रहा है जब मैं यूआईबटन के केंद्र निर्देशांक को रूटव्यू के समन्वय में परिवर्तित करने का प्रयास करता हूं जो UIView है। पोर्ट्रेट दृश्य में

- (void) fancyLabelButtonPressed: (UIButton *) button { 
    CGPoint btnPoint = button.center; // x=200.5 y=27.5 
    CGPoint rootViewPoint = [button convertPoint:btnPoint toView:rootView]; 
    // rootViewPoint -> x=390.5 y=197.5 
    CGPoint pointToUse = CGPointMake(btnPoint.x +20, rootViewPoint.y - 23); // Hack to get it close 
} 

मैं कैसे जब हूँ कर सकते हैं rootViewPoint.x=390.5 !!:

यहाँ कोड है? बटन से एक्स का उपयोग करके और रूट से yVVointPoint मैं y के करीब आता हूं लेकिन यह सिर्फ एक हैक है।

क्या कोई देखता है कि मैं क्या गलत कर रहा हूं? या कोई बेहतर तरीका है?

उत्तर

49

ऐसा इसलिए है क्योंकि आप गलत दृश्य से बिंदु को परिवर्तित कर रहे हैं। center संपत्ति वास्तव में बटन के पर्यवेक्षण की समन्वय प्रणाली में है, जो कुछ भी है, इसलिए जब आप इसे अपने रूट व्यू में परिवर्तित करते हैं, तो आपको इसे वहां से परिवर्तित करना होगा। तो:

rootViewPoint = [[button superview] convertPoint:btnPoint toView:rootView]; 

जो आपको ढूंढ रहे हैं उसे आपको देना चाहिए।