2008-11-17 12 views
14

मेरे पास एक बटन है जिसे मैं तालिका दृश्य तालिका के सबव्यूव के रूप में जोड़ रहा हूं। हैडर व्यू। बटन ठीक दिखाई देता है, और उस पर टैप-एंड-होल्डिंग अंतःक्रियात्मक रूप से काम करता है - अधिकांश भाग के लिए, हालांकि, यह उत्तरदायी नहीं है। मैंने इसे टेबल के सबव्यू के रूप में जोड़ने की कोशिश की है; प्रभाव वही है। मैंने सोचा कि समस्या स्क्रॉल व्यू के स्पर्श अवरोध के साथ हो सकती है, लेकिन तालिका पर स्क्रॉलिंग को अक्षम करने से कोई प्रभाव नहीं पड़ता है।UITableView शीर्षलेख में UIButton अधिकांश छूने को अनदेखा करता है

क्या मैं कुछ गलत कर रहा हूं? क्या किसी और का इससे सामना हुआ है?

संपादित करें - स्पष्टीकरण के लिए, मैं मुख्य तालिका शीर्षलेख के बारे में बात कर रहा हूं, समूह अनुभाग-शैली तालिका में सेक्शन हेडर नहीं; मूल रूप से "संपर्क" स्क्रीन के बाद मॉडलिंग सोचें।

+0

मुझे इस सटीक मुद्दे का सामना करना पड़ रहा था, लेकिन स्वीकृत उत्तर मेरे लिए काम नहीं करता था। [इस प्रश्न का उत्तर] (http://stackoverflow.com/questions/19256996/uibutton-not-showing-highlight-on-tap-in-ios7/19299451#19299451) मेरे लिए इस मुद्दे को पूरी तरह से ठीक किया गया। –

उत्तर

22

मुझे एक ही समस्या थी। मेरे मामले में मेरे पास आईबी में तत्काल एक कंटेनर दृश्य था (जिसे कोड में तालिका दृश्य शीर्षलेख के रूप में लागू किया गया था), UIImageView उस कंटेनर के पूरे फ्रेम पर कब्जा कर रहा है। गलत दृश्य बटन छवि दृश्य में रहता है।

बाहर कर देता है मैं इस प्रकार सेट आईबी में आकार struts है करने के लिए आवश्यक ...

कंटेनर देखें: सभी पर बाहरी लंगर, आंतरिक आकार बदलने - सभी बंद

उप छवि दृश्य: (आंतरिक पर सभी struts और बाहरी)

मेरे पास कई अलग-अलग टेबल दृश्य थे, सभी हेडर दृश्यों का उपयोग करते हुए। कुछ स्पर्श घटनाओं को सही ढंग से प्रतिक्रिया देंगे, कुछ flaky थे। इसने मेरी समस्या हल की

+2

+1। यह मेरे लिए काम किया। मैं इसके लिए आईबी का उपयोग नहीं कर रहा हूं, इसलिए मुझे प्रोग्राम्सैटिक रूप से स्ट्रेट्स को '-सेटऑटोरोसिंगमास्क:' के साथ सेट करना पड़ा, और मुझे यह कंटेनर पर केवल आवश्यक पाया गया। आंतरिक छवि नियंत्रण को कुछ भी चाहिए नहीं। धन्यवाद! दुर्घटना से इस पर कभी ठोकर नहीं खाई होगी। –

+0

मेरे सिर को झुकाव के घंटों के बाद, यह मेरे लिए काम करता था। धन्यवाद। वास्तव में – thedeveloper3124

+1

। मेरे मामले में मेरे पास शीर्षलेख में कुछ UITextFields थे जो कीबोर्ड लाएंगे। मैं कुंजीपटल को समायोजित करने के लिए अपने टेबल व्यू का आकार बदल रहा था। सब कुछ सही दृष्टि से देखा और तालिका वांछित के रूप में ठीक स्क्रॉल किया। हालांकि तालिका शीर्षलेख में कोई भी नियंत्रण उत्तरदायी नहीं था, मैंने तालिका दृश्य का आकार बदल दिया। मेरे कंटेनर व्यू पर आंतरिक स्केलिंग था। एक बार मैंने इसे बंद कर दिया, सब काम किया! धन्यवाद। –

-7

आपको यह मानना ​​चाहिए कि यह हेडर व्यू का इच्छित मुकदमा नहीं है और इसके कार्यान्वयन के परिणामस्वरूप एचआईजी उल्लंघन के परिणामस्वरूप ऐपस्टोर से अस्वीकृति हो सकती है। यह देखते हुए कि एक शीर्षलेख के आयाम छोटे होने का इरादा रखते हैं, शायद आपके विचार के पुनर्गठन पर विचार करना बेहतर है। ऐसा कहने के बाद, हाथों का पता लगाने के स्पर्श से कम करने और ज्यामिति को स्वयं निर्धारित करने का कोई आसान तरीका नहीं है, फिर ज्यामिति के आधार पर चयनकर्ता को निष्पादित करना - संक्षेप में, अपना स्वयं का बटन वर्ग रोल करना।

+0

मुझे एचआईजी में कुछ भी नहीं मिला है जिसमें तालिका में बटन (जैसे अनुभाग के विपरीत) हेडर/पाद लेख दृश्यों का उपयोग प्रतिबंधित है; संपर्क ऐप बिना किसी समस्या के टेबल फ़ूटर को बटन जोड़ता है, और ऐप्पल का "हेडरफ़ूटर" नमूना कुछ समान करता है (हालांकि यह एक ही समस्या प्रदर्शित करता है)। रडार, हो सकता है? –

+0

अधिक संभावना है कि मैं एक बग दर्ज करने का सुझाव नहीं दूंगा। – wisequark

7

मैं पूरी तरह से Wisequark से असहमत - वहाँ बिल्कुल गलत tableHeaderView में एक बटन डालने के साथ कुछ भी नहीं है, और एक होगा सहित नहीं अपने ऐप का ऐप स्टोर से अस्वीकार कर दिया जा रहा जोखिम। तालिका हैडर व्यू को मनमाने ढंग से देखने के लिए डिज़ाइन किया गया है जिसमें आप जो भी तत्व चुनते हैं।

जहां तक ​​आपकी समस्या है, यह हो सकता है कि आपको अपने बटन को अस्पष्ट करने का एक दृश्य हो, या यह ऐप्पल को सूचित किया जाना चाहिए।

10

मुझे एक ही समस्या थी - तालिका के शीर्षलेख दृश्य के रूप में सेट के अंदर एक टेक्स्टफील्ड और बटन जो टच इवेंट्स का जवाब नहीं देगा। setAutoResizing प्रोग्रामेटिक रूप से मेरे लिए काम किया।

मेरे नियंत्रक UITableViewController फैली हुई है, और viewDidLoad इस तरह दिखता है:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    MYCustomWidget *headerView = [[[NSBundle mainBundle] 
       loadNibNamed:@"MYCustomWidgetView" owner:self options:nil] 
       objectAtIndex:0]; 

    [headerView setAutoresizingMask:UIViewAutoresizingNone]; 

    self.tableView.tableHeaderView = headerView; 
} 

('MYCustomWidget' फैली हुई है UIView, और 'MYCustomWidgetView' एक XIB फ़ाइल है)।

+3

AutoresizeMask को सेट करने के लिए यह मेरे लिए किया था। – Matjan

2

मेरी स्थिति डैनी हॉल के समान थी (तालिका शीर्षलेख दृश्य UIImageView था, और यूआईबटन था जो UIImageView का एक सबव्यूव था)। मेरे मामले में, बटन छवि दृश्य के सबव्यू होने के कारण होने वाली समस्या उत्पन्न हुई है। मेरे लिए क्या काम किया गया एक UIView "युक्त" दृश्य बना रहा था, जैसे कि छवि दृश्य के साथ-साथ बटन "युक्त" दृश्य के सबव्यूव थे। अजीब।

+0

हाँ, UIImageView में 'userInteractionEnabled' डिफ़ॉल्ट रूप से' NO' पर सेट है, इसलिए छवि दृश्य के सबव्यूव के रूप में एक बटन स्पर्शों का जवाब नहीं देगा। मुझे यकीन है कि यह एक अलग मुद्दा था। फिर भी सुझाव के लिए धन्यवाद। :) –

1

tableHeaderView0 ऊंचाई है यह में ड्रा प्रोसेस कर रहा है, जबकि UITableView

उपयोग इस UIView मजबूत निरंतर ऊंचाई प्रसंस्करण की स्थापना की और अनदेखी करने के लिए UITableView उपवर्ग

#import <UIKit/UIKit.h>             
@interface CustomHeaderCell : UIView 

@end 

//----- 

@import "CustomHeaderCell.h" 

@implementation CustomHeaderCell 


-(void)setFrame:(CGRect)frame { 
    frame.size.height = 43; // !!! constant height 
    [super setFrame:frame]; 
} 

@end 
2

आश्चर्यजनक रूप से पर्याप्त है, लेकिन तालिका शीर्षलेख दृश्य स्पष्ट रूप से गलत तरीके से आकार बदल दिया गया है। मैं ऑटो लेआउट का उपयोग करता हूं, इसलिए ऑटोरेसाइजिंग मास्क मेरे लिए एक विकल्प नहीं था। मेरे विचार पदानुक्रम का निरीक्षण करने के बाद: enter image description here

और पाया है कि मेरी कस्टम हेडर दृश्य गलत ऊंचाई थी, इसलिए केवल कम आधा tappable था (हाइलाइट किए गए दृश्य देखें):

enter image description here

के मैनुअल अद्यतन करने

- (void)viewDidLayoutSubviews { 
    CGRect frame = self.tableView.tableHeaderView.frame; 
    frame.size.height = 116.0; 
    self.tableView.tableHeaderView.frame = frame; 
} 

enter image description here

: इसकी ऊंचाई समस्या तय

इसके अलावा, अभिविन्यास बदल जाने के बाद तालिका दृश्य शीर्षलेख ऊंचाई अमान्य हो सकती है। इस समस्या को प्रदत्त समाधान के साथ भी ठीक किया जा सकता है।

-1

में पाद लेख की ऊंचाई निर्धारित करने के लिए मत भूलना:

-(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{ 
0

मैं एक ही समस्या UITableView's हैडर दृश्य में काम नहीं कर रहा UIButtons कार्रवाई की है। सबसे पहले मैं देख .None जो नहीं @Davyd और @Alexey का जवाब मैं पता है कि मैं हेडर की ऊंचाई निर्धारित नहीं की थी पढ़ने के बाद तो काम करता है के लिए setAutoresizingMask की कोशिश की तो मुझे यह पसंद सेट: -

self.tablevwMain.tableHeaderView?.frame = CGRect(x: 0, y: 0, width: width_view, height: your_height) 

और अंदर सभी UIButton'sUITableView's हेडर व्यू सही तरीके से काम करता है।

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