通过子视图获取视图

时间:2012-07-07 11:35:23

标签: cocoa-touch uiview touch

我希望有一个顶视图(UIView的子类),它使用

捕获触摸
- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
- (void) touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
...

·H

@interface XView : UIView<UITableViewDataSource, UITableViewDelegate>

@property (nonatomic, strong) UITableView * tableView;

@end

这个工作正常,如果视图为空,但只要我插入(addSubview)就让我们说一个UITableView

- (id)initWithFrame:(CGRect)frame 
{
    self = [super initWithFrame:frame];
    if (self) {
        // Initialization code

        self.tableView = [[UITableView alloc] initWithFrame:self.frame];

        self.tableView.delegate = self;
        self.tableView.dataSource = self;

        [self addSubview:self.tableView];

    }
    return self;
}

不会触发XView内部的触摸方法

1 个答案:

答案 0 :(得分:0)

您需要子类化UITableView或使用UITapGestureRecognizer来解决此问题。我个人会选择UITapGestureRecognizer。

UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapCode:)];
[self.tableView addGestureRecognizer:tap];

然后你可以在这里处理你的点击:

- (void)tapCode:(UITapGestureRecognizer *)recognizer
{
    // code goes here
}

如果你是UITableView的子类,你可以将touchesBegan:withEvent放在那里。