问题描述:
视图view上有一个UIButton实例btn,绑定了一个点击事件的响应方法buttonClicked:,由于某种需要(如点击空白区域收起键盘),为view添加了UITapGestureRecognizer手势,关键代码如下:
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(resignRespond)];
[self.view addGestureRecognizer:tap];
[tap release];
运行,点击按钮btn的时候,方法buttonClicked:未调用,调用的是UITapGestureRecognizer手势的回调方法resignRespond。也就是说UIButton的点击事件被UITapGestureRecognizer截获了,两者相互冲突。
解决方法:
设置UITapGestureRecognizer的代理,然后在协议方法中作判断,主要代码如下:
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(resignRespond)];
tap.delegate = self;
[self.view addGestureRecognizer:tap];
[tap release