无法识别导航栏的图像视图上的触摸。?

Posted

技术标签:

【中文标题】无法识别导航栏的图像视图上的触摸。?【英文标题】:Can't Recognize Touch On navigation Bar's Image View.? 【发布时间】:2011-09-09 12:28:41 【问题描述】:

我有一个带导航栏的视图

实际上我已经拍摄了一个图像视图并将其放在导航栏上......

我希望按钮不在右侧或左侧,而是在导航栏上的某个位置

通过这种方法,我可以识别视图上的触摸,但无法识别导航栏上的触摸?

我能改变什么吗... 在这种方法... 为什么?

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *) event 

    CGPoint p;
    p.x=0;
    p.y=0;

    p = [[touches anyObject] locationInView:self.nvbrCalculateBar];

    NSLog(@" %f",p.x);



    if(p.x==0 && q.x==0)
    

    
    else
     

//加载视图

    


【问题讨论】:

【参考方案1】:

您可以将 UITapGestureRecognizer 添加到您的 UIImageView 中,这应该可以解决问题

UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapEvent:)];
[yourImageView addGestureRecognizer:tap];
[tap release];

- (void)tapEvent:(UITapGestureRecognizer *)gesture 
  //Do whatever you need when user taps the imageView

还将 imageView 的 userInteractionEnabled 设置为 YES 以便能够接收手势识别器事件。

希望这会有所帮助。

【讨论】:

谢谢.......:.) 非常好用...因为您已经启用了返回 userIntercation 我已经尝试过.. 很多以前...谢谢.... 非常感谢您的回答。很遗憾你没有更多的积分,因为在看了一天各种不完整或令人困惑的资源之后,这终于是一个合适的回应。【参考方案2】:

UINavigationBar 本身没有设置为返回触摸,因为我相信它不是实际 UIView(touchesBegan 方法适用)的一部分。相反,您可以将各种项目推送到导航栏(例如按钮)上,您可以为其定义交互。

参见其参考here。

【讨论】:

【参考方案3】:

用户交互必须启用 UINavigation Bar 属性,然后应用触摸方法..

【讨论】:

【参考方案4】:

你可以试试:

    [imageView setUserInteractionEnabled:NO];

这应该会阻止您的 imageview 取消触摸。

【讨论】:

以上是关于无法识别导航栏的图像视图上的触摸。?的主要内容,如果未能解决你的问题,请参考以下文章

缩放时,UIScrollview 子视图无法识别手势

-webkit-overflow-scrolling:在 chrome 和 ios 上无法识别触摸

UIScrollview 子视图在缩放后无法识别平移手势

Java 上的 Sikuli 无法识别图像

如何将手势识别器添加到一系列子视图中?

禁用隐藏导航栏的触摸