iPhone SDK:检测被点击的视图

时间:2011-02-21 22:53:02

标签: iphone ios uiimageview uitouch

在我的应用程序中,我有很多小的UIImageViews和一个侧视图。我需要的是侧视能够检测哪个图像视图被点击并给我关于它的所有信息(很像(id)发送者)以及它的坐标。做这个的最好方式是什么?

3 个答案:

答案 0 :(得分:2)

这是我项目的内部类。我想你应该已经明白了。 作为选项,您可以为所有者(或委托)创建协议。 您可以使用

获取坐标
-[UITouch locationInView: someView]

以下是代码:

@interface _FaceSelectView : UIImageView {
@protected
    VIFaceSelectVC* _owner;
}
-(id) initWithOwner:(FaceSelectVC*) owner;
@end

@implementation _FaceSelectView

-(id) initWithOwner:(FaceSelectVC*) owner {
    if( self = [super init] ) {
        _owner = owner;
        self.userInteractionEnabled = YES;
    }

    return self;
}

-(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    [_owner _touchesBeganIn: self withTouch: (UITouch*)[touches anyObject]];
}

-(void) touchesEnded:(NSSet*) touches withEvent:(UIEvent*) event {
    [_owner _touchesEndedIn: self withTouch: (UITouch*)[touches anyObject]];
}

-(void) touchesMoved:(NSSet*) touches withEvent:(UIEvent*) event {
    [_owner _touchesMovedIn: self withTouch: (UITouch*)[touches anyObject]];
}

@end

答案 1 :(得分:1)

我会继承UIImageView并为您要发送的目标视图添加一个新属性。然后重新启用userInteractionEnabled并向touchesUpInside添加操作。

在自定义子类的action方法中,在目标视图上调用一个方法,您也可以在该方法中为自定义子视图提供对象。基本上你使用委托并传递委托调用你需要的所有参数。

答案 2 :(得分:0)

将标记添加到UIImageView,如myUIImageView.tag = intNumber; 并且在side touchesBegan中,您可以为所有UIImageView调用任何常用方法,并使用标记来识别被点击的视图。