簡體   English   中英

iPhone SDK:檢測被點擊的視圖

[英]iPhone SDK: detect view that was tapped

在我的應用程序中,我有很多小UIImageViews和一個側面視圖。 我需要的是側面的視圖,以便能夠檢測到點擊了哪個圖像視圖,並向我提供有關它的所有信息(非常類似於(id)sender)以及其坐標。 做這個的最好方式是什么?

這是我項目中的內部類。 我想你應該已經明白了。 作為一種選擇,您可以為所有者(或委托)創建協議。 您可以使用以下方法獲取坐標

-[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

我將子類化UIImageView並為您要發送消息的目標視圖添加新屬性。 然后重新啟用userInteractionEnabled並將操作添加到touchesUpInside。

在自定義子類的action方法中,在目標視圖上調用一個方法,在該方法中您還提供了自定義子視圖的對象。 基本上,您使用委托並傳遞委托調用所需的所有參數。

將標簽添加到UIImageView,例如myUIImageView.tag = intNumber; 開始觸摸后,您可以為所有UIImageView調用任何通用方法,並使用標簽來確定點擊了哪個視圖。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM