1

所以,我添加了一个UITableViewControllerandUITableViewCell到一个UIViewControllerand 虽然cellForRowAtIndexPath委托方法有效,didSelectRowAtIndexPath但没有。有没有人有任何想法?

  • 编辑 2: 的代表UITableView设置为UIViewController.

  • 编辑 3:我在这里的另一个 Stack 问题上找到了我的问题的答案。UITap...基本上我有一个[self view]阻止didSelectRow.... 我不知道为什么水龙头会阻止委托方法,我也不知道如何让水龙头和桌子同时工作。

  • 编辑:让我烦恼的部分是我已经在早期的应用程序上得到了这个精确的设置。所以这意味着我在路上的某个地方错过了一步。问题是,我已经梳理了所有步骤,并将以前的应用程序与当前应用程序进行了比较,我真的不知道我错过了什么。

我已将日志记录添加到两种委托方法中,而一个输出,另一个没有。

视图控制器.h

#import "...TableViewCell.h"
...
    UITableViewDataSource,
    UITableViewDelegate
...

视图控制器.m

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSLog(@"cellForRowAtIndexPath");
    ...
    return Cell;
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSLog(@"didSelectRowAtIndexPath");
}

...TableViewCell.h(内容不重要)

...TableViewCell.m(内容不重要)

4

4 回答 4

2

我在另一个 StackOverflow 问题上找到了答案。

UITapGestureRecognizer添加了一个[self view]注释掉的内容,然后委托方法起作用了。

谁能告诉我为什么这有效,以及我如何才能UITapGestureRecognizer在同一屏幕上工作UITableView

// Hide keyboard when user taps outside of it
UITapGestureRecognizer *tapGestureRecognizer =
    [[UITapGestureRecognizer alloc] initWithTarget:self
                                            action:@selector(hideKeyboardOnTap)];
//[[self view] addGestureRecognizer:tapGestureRecognizer];
  • UITapeGestureRecognizer编辑:更正了to的错字UITapGestureRecognizer
于 2013-09-30T00:56:51.490 回答
1

你设置的代表了tableView吗?

myTableView.delegate = self;

编辑:我的错,没有读取该行的单元格正在被调用。

你说你使用了一个 custom tableViewController。如果您已覆盖该方法,则didSelectRowAtIndexPath调用[super didSelectRowAtIndexPath:]tableViewController

编辑2:还有一件事。我不知道这是什么原因,但我在viewController. 我通过didDeselectRowAtIndexPath在相同的viewController. 尝试将其添加到表的delegate控制器中。

于 2013-09-30T00:28:49.313 回答
0

要回答“如何让 UITapGestureRecognizer 在与 UITableView 相同的屏幕上工作”的问题;

您应该“通知”您的 GestureRecognizer 其他识别器可以处理相同的手势:

你通过实现的方法来做到这一点UIGestureRecognizerDelegate

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer

这是一个小例子...

@interface MyController : UIViewController<UIGestureRecognizerDelegate>  
{ 
}  
@end  


-(void)viewDidLoad  
{  
    UITapGestureRecognizer *gr = [[UITapGestureRecognizer alloc] initWithTarget:self  action:@selector(actionOnTapGesture:)];  
    [gr setNumberOfTapsRequired:1];  
    [gr setDelegate:self];  
    [self.view addGestureRecognizer:gr];    
}  

-(BOOL) gestureRecognizer:(UIGestureRecognizer *) gestureRecognizer shouldRecognizeSimultaneouslyGestureRecognizer:(UIGestureRecognizer *) otherGestureRecognizer  
{  
    return YES;  
}
于 2014-07-07T10:11:57.683 回答
0

如果属性选择设置为“无选择”,请检查界面生成器。根据您的需要将其更改为“单选”或其他选项。

这可能是 didSelect 没有被触发的原因。

于 2021-06-02T15:48:11.473 回答