我有一个UIView响应点击(视图A)。我有一个带有UITableView(视图B)的UITableViewController。视图B被添加为视图A的子视图,并且视图B的面积小于视图A的面积。因此,如果用户在视图B内点击,他们可以在表中选择一行。如果他们在桌子外点击但仍在视图A内,则视图A的响应会有所不同(这是一个隐藏自身的抽屉)。
在iOS 5和6中,此方法运行良好。但是,在iOS7中,即使视图B(UITableview)是视图A的子视图,它也似乎从未收到触摸,也从未选择过行。当我禁用视图A的UITapGestureRecognizer时,视图B然后开始获取触摸,用户可以选择表中的行(但是视图A现在不响应触摸,因此这是不可接受的)
我的代码没有更改。关于iOS7中可能出什么问题的任何想法?提前致谢!
最佳答案
您可以通过以下两种方法处理此问题:
gestureRecognizerShouldBegin
中的 UIGestureRecognizerDelegate
:UIGestureRecognizerDelegate
:@interface ViewController () <UIGestureRecognizerDelegate>
...
@end
delegate
:UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)];
tap.delegate = self;
[self.viewA addGestureRecognizer:tap];
gestureRecognizerShouldBegin
,如果水龙头的位置包含在frame
的viewB
中,则返回NO:- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gesture
{
CGPoint point = [gesture locationInView:self.viewB.superview];
return !CGRectContainsPoint(self.viewB.frame, point);
}
UIGestureRecognizerStateFailed
)(如果敲击的位置与UITableView
子视图重合)。 关于ios - subview 在iOS7中不接收触摸,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19207089/