Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 在“我的自定义视图”中,平移手势超过点击手势_Objective C_Uiview_Ios7_Uipangesturerecognizer - Fatal编程技术网

Objective c 在“我的自定义视图”中,平移手势超过点击手势

Objective c 在“我的自定义视图”中,平移手势超过点击手势,objective-c,uiview,ios7,uipangesturerecognizer,Objective C,Uiview,Ios7,Uipangesturerecognizer,我遇到了一个问题,希望有人能帮我解决 我有一个视图,它有一个平移手势,可以很好地工作,我可以围绕我显示的图像进行平移。这是唯一添加的手势 然后,我添加了一个UIView(一个称为headerView的自定义视图),上面有我通过编程方式添加的按钮 它正确显示按钮 我已将其委托设置为self 我已确认正在设置按钮的选择器 我以前在另一个窗体上使用过headerView,按钮工作正常 我把我的头像带到“前线” 我遇到的问题是,在这个带有平移手势的表单上,我头部视图上的按钮对我的点击没有反应。如果我

我遇到了一个问题,希望有人能帮我解决

我有一个视图,它有一个平移手势,可以很好地工作,我可以围绕我显示的图像进行平移。这是唯一添加的手势

然后,我添加了一个UIView(一个称为headerView的自定义视图),上面有我通过编程方式添加的按钮

  • 它正确显示按钮
  • 我已将其委托设置为self
  • 我已确认正在设置按钮的选择器
  • 我以前在另一个窗体上使用过headerView,按钮工作正常
  • 我把我的头像带到“前线”
我遇到的问题是,在这个带有平移手势的表单上,我头部视图上的按钮对我的点击没有反应。如果我直接在我的headerView上平移,我就能够在底层图像上移动,这样平移手势似乎超越了headerView上的点击手势,阻止了任何标题按钮的工作

如何修复它,使平移手势不会阻止在我的头部视图中点击

谢谢

有些解决了。。。 更新此帖子。我可以通过点击手势手动设置headerView来获得响应

self.headerView = [[OAPhotoHeaderView alloc] initWithFrame:CGRectMake( 0.0f, 0.0f, self.view.window.bounds.size.width, 100.0f) buttons:OAPhotoHeaderButtonsComment| OAPhotoHeaderButtonsLike |OAPhotoHeaderButtonsFlag];//was 44.0f
self.headerView.delegate = self;
[self.headerView setUserInteractionEnabled:YES];
self.headerView.backgroundColor = [UIColor grayColor];
self.headerView.photo=user;
[self.headerView setPhoto:self.userPhotoObject];//  self.myUserPhotoObject];
[self.headerView.likeButton setUserInteractionEnabled:YES];
//[self.headerView.likeButton addTarget:self action:@selector(didTapLikePhotoButtonAction:) forControlEvents:UIControlEventTouchUpInside];
[self.headerView setUserInteractionEnabled:YES];
[self.headerView setOpaque:YES];
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self.headerView action:@selector(didTapLikePhotoButtonAction:)];
[tap setNumberOfTouchesRequired:1];
[tap setNumberOfTapsRequired:1];
[self.headerView addGestureRecognizer:tap];
[self setExclusiveTouchForButtons:self.headerView];
这实际上激发了headerView类中的按钮处理程序,就好像有人按下了按钮一样。然而,这将不起作用,因为他们可以按headerView上的任何位置,它将开火。我似乎找不到正确的方法将轻触手势指定给按钮

[self.headerView.likeButton addGestureRecognizer:tap]
不起作用。而且,这也不起作用

[self.headerView.likeButton addTarget:self action:@selector(didTapLikePhotoButtonAction:) forControlEvents:UIControlEventTouchUpInside];

您应该添加另一个手势识别方法,允许您在点击按钮时取消:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
     // Replace to your view with button
    if ((self.headerView isDescendantOfView:touch.view))
    {
        return NO;
    }
    return YES;
}
记住将视图控制器添加为手势识别器的代理。
希望有帮助。

每当我在处理我的某个东西时,结果是该对象是可见的,但实际上不在包含视图的范围内,因为该视图没有设置clipToBounds。可能您的包含视图边界并不是您所认为的那样。无论如何,这是另一个追求的途径。

我可以使用-(BOOL)手势识别器:(uigesturecognizer*)手势识别器应该接收触摸:(UITouch*)触摸{…}但是,按钮仍然没有显示点击。试着在按钮上设置exclusiveTouch。我不确定这是否有帮助,但值得一试。这是来自Apple doc:ExclusiveTouch仅在独占触摸视图中有活动触摸的时间内阻止其他视图中的触摸。感谢您的建议Greg!我将按钮设置为exclusiveTouch,但仍然不起作用:(谢谢你这么做。我确实用它忽略了平移手势,它成功地做到了。但是,我的自定义视图的按钮仍然没有显示点击。我添加了IsDescendaToView,但没有任何效果。在视图上平移手势被忽略,但按钮仍然没有响应。请尝试将按钮放在前面。或者删除带h的线条正面的eaderView我认为这是问题的原因。谢谢Greg。我完全禁用了平移手势,因此不应该出现自定义手势,但我的headerView上的点击没有响应。我认为这可能是我的实现(我不知道如何实现,因为这是一个如此简单的实现)谢谢你的帮助。如果我发现了什么,我会更新线程。谢谢查理。我已经被那块金块灼伤了很多次。我已经学会了在调试时将背景颜色设置为花哨的红色,这样我就可以立即判断屏幕外是否有任何内容。在这种情况下,所有内容都是可见的,并且应该在哪里。我已经更新了原始帖子如果您有时间看一看,请提供更多详细信息。谢谢您的帮助。