2012-06-26 12 views
7

मैं UINavigationBar के बजाय UIView और UIButtons का उपयोग करके अनुकूलित नेविगेशन बार बना रहा हूं।आईफोन: UIButton को कैसे बनाया जा सकता है जिसे आप आसानी से टैप कर सकते हैं?

लेकिन नेविगेशन बार पर मेरा UIButtons संवेदनशीलता से प्रतिक्रिया नहीं देता है।

मुझे टैप करने के लिए UIButton के लगभग केंद्र को टैप करना होगा।
अगर मैं UIButton के किनारे पर टैप करता हूं तो यह प्रतिक्रिया नहीं देता है।

लेकिन सामान्य UINavigationBar पर बटन बटन के किनारे पर टैप करके टैप किए जा सकते हैं।
बटन के बाहर टैप करके भी, इसे टैप किया जा सकता है।

कैमरा ऐप पर शटर बटन या विकल्प बटन को किनारे या बटन के बाहर टैप करके भी टैप किया जा सकता है।

मैं अपने ऐप में उन आसानी से टापेबल बटन कैसे कार्यान्वित कर सकता हूं?

+2

कुछ नमूना कोड समस्या का निदान करने में मदद कर सकते हैं। –

+0

@ben धन्यवाद। मैं नमूना कोड की तलाश करूंगा। लेकिन यह मेरी समस्या नहीं है। मुझे लगता है कि यह 'UIButton' का विनिर्देशन है। सभी 'UIButton'' UINavigationBar' के बटन से कम संवेदनशील हैं। मैं उस क्षेत्र का विस्तार करने के लिए कुछ संपत्ति या तरीका जानना चाहता हूं जिसे टैप किया जा सकता है। –

+0

यूआईबटन आमतौर पर एक बहुत बड़ा टैप क्षेत्र होता है। ऐसा लगता है कि आप उन्हें तोड़ने के बजाय गलत तरीके से कॉन्फ़िगर कर रहे हैं और आपको इसके आसपास काम करने की आवश्यकता है। कोड के लिए बेन का अनुरोध सही है। –

उत्तर

11

एक छवि का उपयोग करें और एक कस्टम बटन बनाएँ। बटन सेट करें ताकि छवि बटन के दृश्य के आकार में स्केल न हो, बल्कि इसके बजाय केंद्र ही होगा। बटन के आकार का विस्तार करें ताकि यह प्रत्येक तरफ की छवि से बड़ा हो। ऐप्पल टैब बटन जैसी चीजों के साथ भी करता है।

+0

बस स्पष्ट करने के लिए, बटन का वास्तविक आकार उस छवि से बड़ा है जो प्रदर्शित करता है, इसलिए टच करने योग्य क्षेत्र केवल छवि आकार की तुलना में बहुत बड़ा है, हालांकि केवल छवि दिखाई देती है, इसलिए बहुत बड़ा क्षेत्र स्पर्श संवेदनशील होता है। –

+1

धन्यवाद! यह काम करता हैं। मैंने पाया कि UIButton की इन्सेट संपत्ति टैप क्षेत्र का विस्तार करने के लिए भी उपयोगी है। और छवि में पारदर्शी मार्जिन जोड़ना भी टैप क्षेत्र का विस्तार कर सकता है। –

4

अस्वीकरण:इस कोड का परीक्षण नहीं किया गया है, लेकिन यह आपको एक विचार देता है कि यह कैसे किया जा सकता है।

आप एक बटन (इस मामले में 40px x 40px) बनाते हैं, और फिर उसमें एक पृष्ठभूमि छवि जोड़ें जो छोटा है, इसलिए इंप्रेशन देता है कि छवि बहुत "क्लिक करने योग्य" है।

// This image is 20px x 20px (Just an example) 
UIImage* backgroundImage = UIImage imageNamed:@"backgroundImage.png"] 

// Custom button, remember to add a target method 
UIButton* customButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
customButton.frame = CGRectMake(0.0, 0.0, 40.0, 40.0); 
customButton.contentMode = UIViewContentModeCenter; 
[customButton setImage:backgroundImage forState:UIControlStateNormal]; 

UIBarButtonItem* customBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:customButton]; 
self.navigationItem.rightBarButtonItem = customBarButtonItem; 
[customBarButtonItem release]; 
10

UIButton इस उद्देश्य के लिए विशेष रूप से एक imageEdgeInsets property है। imageEdgeInsets का उपयोग करके बस यूआईबटन फ्रेम को उतना बड़ा बनाएं जितना आपको टच करने योग्य क्षेत्र और उसके अंदर स्केल छवि की आवश्यकता है।

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

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