didSelectRowAtIndexPath: не вызывается

У меня есть UITableView в качестве подпредставления моего UIScrollVIew , который является основным представлением, управляемым моим MainViewController .

В MainViewController.h

@interface MainViewController : UIViewController <UIGestureRecognizerDelegate, UITableViewDelegate, UITableViewDataSource>

// other stuff here...

@property (weak, nonatomic) IBOutlet UITableView *myTableView;

В MainViewController.m

@synthesize myTableView;

// other stuff here...

- (void)viewDidLoad {
    myTableView.delegate = self;
    myTableView.datasource = self;
}

// other stuff here...

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath: (NSIndexPath *)indexPath {
   [self performSegueWithIdentifier:@"listAttributesSegue" sender:self];
}

я знаю, что didSelectRowAtIndexPath не вызывается, потому что я установил точки останова как для самого метода, так и для строки кода внутри него, и ни то, ни другое не вызывается. Я также знаю, что источник данных работает правильно, потому что у меня есть другие функции, которые изменяют ячейки во время выполнения, и они работают отлично. Я использую последнюю версию Xcode с iOS 5.0, установленной в качестве цели разработки. Я искал и искал ответ. У кого-нибудь есть идеи?

Edit: Я нашел ответ. У меня был набор UITapGestureRecognizer для superView myTableView.Это перекрыло вызов выбора. Благодарность тому, кто предположил, что это могло быть именно так. Ваш ответ был удален до того, как я смог отметить его правильным.

Редактировать 2: Многие люди комментировали это, поэтому я решил поделиться этим. Если вы столкнулись с этой проблемой, просто установите для myGestureRecognizer.cancelsTouchInView значение false , и все должно работать нормально.

57
задан Garrett 8 July 2014 в 07:21
поделиться