2

我有一个视图控制器子类。我正在尝试连接手势识别器以捕获行下方的点击。

为此,我在底部有一个空行,因此用户可以随时滚动,因此屏幕上有一个空单元格。我可以轻松地捕捉这一行的水龙头。

但是 iOS 7 上的 Reminders 甚至支持点击;如果桌子上还有三行的空间,则可以点击这三行中的任何一行,而不仅仅是第一行。

例如,您可以点击红色区域:

在此处输入图像描述

为了在 iOS 6 上做到这一点,我在表格中添加了一个背景视图,并将一个手势识别器连接到它:

UIView *backgroundView = [[UIView alloc] init];
[backgroundView addGestureRecognizer:_tapOutsideGesture];
backgroundView.backgroundColor = [UIColor clearColor];
self.tableView.backgroundView = backgroundView;

这适用于 6.1,但不适用于 7.0。我错过了什么?

我正在使用 Xcode 5.0 和 7.0 SDK 构建,带有IPHONEOS_DEPLOYMENT_TARGET = 6.1.

4

2 回答 2

2

在表格视图中添加手势识别器

UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(doSomething:)];
tapGesture.delegate = self;
[self.tableView addGestureRecognizer:tapGesture];

并检查水龙头是否在某个单元格上。

#pragma mark – UIGestureRecognizerDelegate

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {

   return ![self.tableView indexPathForRowAtPoint:[touch locationInView:self.tableView]];
}
于 2014-06-13T11:11:58.613 回答
1

你可以尝试使用

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch;

ofUIGestureRecognizerDelegate并检查您在哪个视图中,如果您在表格单元格中,则返回NO

当然,iOS7 存在一些问题。如果你想检查你是否在,UITableViewCell你必须在 iOS7 中调用view.superview.superview,而在 iOS6 中它是view.superview.

有关 iOS7 的更多信息: 如何从 UITableViewCell 获取 UITableView? https://devforums.apple.com/message/865550#865550

于 2013-10-15T10:53:38.607 回答