【问题标题】:Get the touch event to a specific area like photo gallery in iphone将触摸事件发送到特定区域,例如 iphone 中的照片库
【发布时间】:2012-03-16 20:09:19
【问题描述】:

在我的 iPhone/iPad 应用程序中(在 Objective-C 中),有一些 UiButton 和其他事件以及一个 UiImageView。图像覆盖整个屏幕,我希望当一个人触摸屏幕的上部或底部区域(意味着假设上部区域有一个按钮)时,图像会调整为特定大小。

但我无法识别是否有人触摸了上部区域,例如在 iPhone 的照片库中(如果我触摸上部/下部区域,导航按钮就会出现,这与我在我的应用程序中想要的一样)。

我的应用中已经有了触摸事件:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {}

如果有人有任何想法或解决方案,请告诉我。

【问题讨论】:

  • 导航将显示在您在照片库中按下的位置,而不仅仅是上/下区域。
  • 是的,我的意思是在照片库中,如果我触摸 iphone 的下部区域,那么它会显示导航区域,否则只会全屏显示图像----------我希望在我的应用中具有相同的行为。
  • 当您点击图像中间时,它也会显示导航。当您再次点击时,导航将消失。因此,无需检测用户是否在视图的上部或下部区域中点击。只需检测用户是否点击了视图中的任何位置。
  • 是的,我知道...但我的问题是我如何识别它现在触及特定元素或区域?

标签: iphone objective-c uiimageview touch photo-gallery


【解决方案1】:

最明显的解决方案是继承 UIImageView,然后覆盖它的 touchesBegun:withEvent: 方法,并在该方法中检查实际触摸发生的位置:

- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    UITouch * touch = (UITouch *)[touches anyObject];
    CGPoint location = [touch locationInView:self];

    if (location.y > some_arbitrary_value || location.y < some_other_arbitrary_value) 
    {
         //touched upper or lower part
    }

}

【讨论】:

  • 我已经尝试过了,但我没有任何特定的点来限制该区域,因为在运行时会生成一些动态控件。
  • 所以?只需获取这些控件的框架并在此函数中使用它们即可。
  • 嗨...谢谢它现在完美运行。我还有一个问题 --- 在我的应用程序中有 UIScrollViewer(uiimageview inside this),当 userinteractionenabled=true 时,应用程序中不会触发触摸事件。如何使用 userinteractionenabled=true 启用触摸事件。
猜你喜欢
  • 2019-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-20
相关资源
最近更新 更多