0

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

4

3 回答 3

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
于 2011-02-21T22:58:16.573 回答
1

我将子类UIImageView化并为您要发送消息的目标视图添加一个新属性。然后重新启用userInteractionEnabled并添加一个动作到 touchesUpInside。

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

于 2011-02-21T23:01:48.030 回答
0

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

于 2011-02-22T01:08:18.210 回答