【问题标题】:How can i associate an IBAction event with an image?如何将 IBAction 事件与图像相关联?
【发布时间】:2010-10-13 09:52:03
【问题描述】:

我有一个包含动态图像的应用程序,我想使用我的自定义动画为图像设置动画。

如何将 IBAction 事件与图像相关联?

如何检测用户触摸图像的屏幕坐标?

请提出您的建议。

在此先感谢您的建议。

【问题讨论】:

  • “我如何将 IBAction 事件与图像相关联?”--> 无法理解你能解释更多你需要什么。
  • 我们有一个弹跳球应用程序,在用户触摸时我们想要改变球的方向并且球是一个图像。所以我希望如果我触摸图像,它应该改变它的方向,因此我想要一个 IBAction 事件与它相关联。我是新手,请帮帮我。

标签: iphone objective-c cocoa-touch uiview ios4


【解决方案1】:

您可以对图像使用自定义 UIButton。所有的触摸处理代码都已经内置了。


编辑:UIGestureRecognizer 也适用于 UIImageViews:

UIImageView *imageView = [[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"foo.png"]] autorelease];
imageView.userInteractionEnabled = YES;
UITapGestureRecognizer *tapGesture = [[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapAction:)] autorelease];
[imageView addGestureRecognizer:tapGesture];
[self.view addSubview:imageView];

【讨论】:

  • 我们有一个弹跳球应用程序,在用户触摸时我们想要改变球的方向并且球是一个图像。所以我很困惑,如果我按照你所说的那样使用按钮,那么我将如何让它随着球的移动而移动。
  • 移动 UIImageView 的方式完全相同。两者都是 UIViews 所以应该没有区别。但老实说,对于移动对象,我不会使用按钮方法。只是感觉不太好。请在答案中查看我的编辑。
【解决方案2】:

你也可以这样做:

首先定义图像所在的矩形:

touchRect=CGRectMake(screen.width/2-screen.width/8, 0, screen.width/4, screen.height/5);

然后使用 touchesEnded 方法,您可以定义当您触摸该区域时要执行的操作:

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

        CGPoint targetPoint = [[touches anyObject] locationInView:self];
        if (CGRectContainsPoint(touchRect,  targetPoint)){
            //YOUR CODE HERE
        }
}

【讨论】:

  • touchRect=CGRectMake(screen.width/2-screen.width/8, 0, screen.width/4, screen.height/5);这个框架是关于什么的?我对此不是很清楚。请解释一下,因为我还是个新手。
  • 如何将 touchesEnded 事件与 IB 中的 imageview 相关联?提前致谢
  • 对不起,它只是一个例子 GRectMake(x position, y position, x size, y size) 只是创建一个 Rect。这就像在你想要的任何位置创建一个不可见的正方形,这样你就可以检查屏幕里面是否有东西
  • 这里不需要添加 IBAction,如果你在触摸屏幕时实现 touchesEnded,它就会被调用
  • 在你的情况下,你可以在每次触摸屏幕时用你的弹跳球做一个矩形,并检查你是否在触摸球所在的位置。
猜你喜欢
  • 1970-01-01
  • 2013-07-12
  • 1970-01-01
  • 2020-05-19
  • 2021-03-27
  • 1970-01-01
  • 1970-01-01
  • 2021-12-29
  • 1970-01-01
相关资源
最近更新 更多