[英]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.