【问题标题】:Does Apple accept code containing check for UITableViewWrapperViewApple 是否接受包含检查 UITableViewWrapperView 的代码
【发布时间】:2014-06-23 10:36:44
【问题描述】:

我正在使用以下代码检查我的viewcontroller.view 上是否发生了点击。 (PS:我为此添加了点击gesturerecognizer

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
    NSLog(@"\n Clicked view is of type %@",touch.view.class);
    if ([touch.view isMemberOfClass:[self class]] || [NSStringFromClass([touch.view class]) isEqualToString:@"UITableViewWrapperView"])
    {
        return YES;
    }
    return NO;
}

由于我的viewcontroller.view 包含具有最少行的TableView 和一些其他视图(如文本字段等),当我在表格视图之间的间隙(几行) 和底部的文本字段。 这可能是因为我的 tableview 的框架足够大,可以容纳触摸点,尽管可见的单元格很少

以上代码非常适合关闭键盘以进行此类点击。 我只是担心 Apple 是否会批准包含 UITableViewWrapperView 的代码检查。

~提前致谢

【问题讨论】:

  • 尝试使用UITableView,它应该是下一个响应者。最近添加了包装器视图,它可能会在任何功能 iOs 版本中被静默删除,因此您的代码不安全或“无法完美运行”。
  • 所以你的目标是当用户点击表格视图但实际上并没有点击表格上的一行时关闭键盘?问这个问题而不是问“私人”课程

标签: ios iphone objective-c uitableview uigesturerecognizer


【解决方案1】:
CGPoint touchPoint = [touch locationInView:nil];
CGPoint convertedPointWRTMainView = [self.view convertPoint:touchPoint fromView:nil];
CGPoint convertedPointWRTTouchView =  [YourTableViewReference convertPoint:touchPoint fromView:nil];
BOOL shouldReturnTouch = [YourTableViewReference pointInside:convertedPointWRTTouchView withEvent:nil];
  shouldReturnTouch =  shouldReturnTouch || [self.view pointInside:convertedPointWRTMainView withEvent:nil];

if(shouldReturnTouch) {
return YES;
}
return NO;

此代码将让您知道使用点击手势的触摸点是否在您的表格视图中。因此,不要使用“UITableViewWrapperView”硬编码检查触摸是否在表格视图内,还要检查点击是否在主视图中。 试试这将适用于 iOS 6 和 7

【讨论】:

  • 这是什么?这到底是如何回答这个问题的?缺乏任何解释会让你在这里投票。 -1
  • @SatyamRaikar 仅仅因为您不同意某条评论并不意味着您必须对其进行辱骂。
  • @SatyamRaikar 这个网站的想法是有人提出问题,用户提供有解释的答案,未来遇到问题的用户如果不一样可以查看答案阅读解释并尝试实施答案。如果一个新用户出现并遇到与 OP 相同的问题并查看您的答案,他们将不知道这里发生了什么,我想认为我是一位经验丰富的开发人员,我不知道您的answer 回答了 OP 的问题。所以我的反对票是有效的,我不需要成为反对票的 OP。
  • @SatyamRaikar 代码也不需要有任何问题,但如果它不能解释自己,那么就像你的答案一样,我不能投反对票。这就是网站的工作方式,如果您不喜欢它,请不要使用它,就这么简单。如果用户知道发生了什么,那么他们一开始就不会问这个问题,所以很明显他们不会。像这样的攻击性语言在这里不受欢迎,只会让你被禁止使用该网站。我已将您的评论标记为滥用,就像我说的,如果您不喜欢它的工作方式,请停止使用此网站。
  • @SatyamRaikar 你使用了"@sshole "SAILOR",这显然是滥用。如果您提供解释来解释您的答案,那么我将非常乐意删除我的反对票,但是由于您侮辱了我,我非常不想这样做,但是如果您提供解释,那也不是这样那很好,那么反对票就会消失。就这样你知道我知道你的代码在做什么我只是不明白它是如何解决 OPs 问题的,这也是你需要解释的原因。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-01-13
  • 1970-01-01
  • 2016-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-04
相关资源
最近更新 更多