2012-05-24 16 views
5

में क्लिक ईवेंट का जवाब नहीं दे रहा है IOS में यह अंधेरा जादूगर मेरे बटन पर क्लिक करने से रोक रहा है। अगर मैं uitableviewcell में बटन नहीं जोड़ता, और मैं बटन क्लिक करता हूं, तो ईवेंट ट्रिगर होता है। लेकिन यदि बटन uitableviewcell में है, तो यह ट्रिगर नहीं होगा, ऐसा लगता है कि तालिका मेरे पास नमूना कोड तैयार है, अगर आप मेरी मदद कर सकते हैं, तो कृपया xcode में केवल एक सरल एकल-दृश्य एप्लिकेशन बनाएं, और बस निम्न पेस्ट करें कोडUIButton UITableViewCell

//GRDViewController.h

#import <UIKit/UIKit.h> 

@interface GRDViewController : UIViewController <UITableViewDataSource, UITableViewDelegate> 

@property (nonatomic, strong) UIView* container; 
@property (nonatomic, strong) UIButton* button; 
@property (nonatomic, strong) UITableView* tableView; 
@property (nonatomic, strong) NSArray* arr; 

@end 

//GRDViewController.m

#import "GRDViewController.h" 

@implementation GRDViewController 
@synthesize button, container, arr, tableView; 

- (void)_btnTapped { 
NSLog(@"TAPPED"); 
} 

- (void)viewDidLoad 
{ 
[super viewDidLoad]; 
// Do any additional setup after loading the view, typically from a nib. 
    self.button = [[UIButton alloc]initWithFrame:CGRectMake(0, 0, 100, 100)]; 
    [self.button addTarget:self action:@selector(_btnTapped) forControlEvents:UIControlEventTouchUpInside]; 
    [self.button setTitle:@"CLICK ME" forState:UIControlStateNormal]; 
    self.arr = [[NSArray alloc] initWithObjects:@"123", @"456", @"678", nil]; 

    self.container = [[UIView alloc]initWithFrame:self.button.frame]; 
    [self.container addSubview:self.button]; 
    [self.view addSubview:self.container]; 
    //[self.view addSubview:self.button]; 

    self.tableView = [[UITableView alloc]initWithFrame:CGRectMake(0, 100, 400, 400)]; 

self.tableView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth; 
self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone; 
    self.tableView.delegate = self; 
    self.tableView.dataSource = self; 

    [self.view addSubview:self.tableView]; 

self.tableView.backgroundColor = [UIColor redColor]; 





} 



    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath: (NSIndexPath *)indexPath { 
static NSString *cellIdentifier = @"coolcell"; 
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier]; 

    if (cell == nil) { 
      cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier]; 
     //cell.accessoryType = UITableViewCellAccessoryNone; 

     UIButton * btn = [[UIButton alloc]initWithFrame:CGRectMake(0, 0, 50, 50)]; 
     [btn addTarget:self action:@selector(_btnTapped) forControlEvents:UIControlStateNormal]; 
     [btn setTitle:[self.arr objectAtIndex:[indexPath row]]  forState:UIControlStateNormal]; 
    [cell.contentView addSubview:btn]; 
     } 

    return cell; 
} 
- (NSInteger)tableView:(UITableView*)tableView numberOfRowsInSection:(NSInteger)section { 
    return [self.arr count];  
} 
@end 

कृपया मदद मुझे लगता है कि इस मामले में आम ios होना चाहिए, लेकिन कोई भी समाधान नहीं है के लिए आर यह ???

संपादित करें: जब बटन पर क्लिक करें यह xcode कंसोल में NSLog संदेश प्रिंट ... इसलिए सुनिश्चित करें कि आप बटन के लिए किसी भी नियंत्रण घटना नहीं दिया है बनाने के ... उर वहाँ परिणामों को देखने का ...

+0

बस एक सुझाव है लेकिन इंटरफ़ेस बिल्डर में बटन क्यों नहीं बनाते हैं और इसके स्पर्शअप इवेंट ईवेंट में आईबीएक्शन मैप करते हैं? नौकरी आसान बना सकता है। इसके अलावा आपने इशारा पहचानकर्ताओं का उपयोग करने की कोशिश की है? मैं अनुमान लगा रहा हूं कि कंटेनर पहले टच इवेंट प्राप्त कर रहा है और इसे अपने सबव्यूव में नहीं भेज रहा है क्योंकि शायद इसका उपयोगकर्ता इंटरैक्शन फ्लैग अक्षम है। क्षमा करें मैं अपने मैक अधिकार के साथ नहीं, लेकिन उम्मीद है कि ये सुझाव मदद करता है! – shawndreck

उत्तर

7

इसके बजाय UIControlStateNormal का उपयोग करने का UIControlStateNormal

7

से UIControlEventTouchUpInside करने के लिए इसे .Change ControlEvents इस

[btn addTarget:self action:@selector(_btnTapped) forControlEvents:UIControlEventTouchUpInside]; 
+0

धन्यवाद ... जवाब देने के लिए यह मुद्दा था। अगर मैं कर सकता हूं तो मैं दोनों जवाब स्वीकार करूंगा, मैं भी आपका जवाब वोट दूंगा। – user1118019

1

तरह UIControlEventTouchUpInside का उपयोग के लिए यह करके देखें:

[btn.titleLabel setUserInteractionEnabled: NO];