我有幾個UIImageViews包含在UIView中。我的想法是當一個UIImageView被觸動時,UIView可以知道哪個人通過代表被觸摸。
這裏是我的代碼
MyImageView.h如何將UIImageView代理分配給其超級UIView,以便它可以知道哪個UIImageView被觸摸
@protocol MyImageViewDelegate
-(void)toucheDelegate:(id)sender;
@end
@interface MyImageView:UIImageView{
id<MyImageViewDelegate> delegate;
}
@property(assign) id<MyImageViewDelegate> delegate;
@end
MyImageView.h
@implementation MyImageView
@synthesize delegate
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
[self.delegate touchDelegate:self];
}
MyView.m
-(void)functionA{
for(int i=0;i<4;i++){
MyImageView *imageView=[[MyImageView alloc] init];
imageView.delegate=self; //Here it gives a warning saying Assigning to 'id<MyImageViewDelegate>' from incompatible type 'MyView *'
[self addSubview:imageView];
[imageView release];
}
}
-(void)touchDelegate:(id)sender{
NSLog(@"in superview");
}
唯一的例外是無法識別的seletor發送到實例0x7526c30。這是什麼意思?
我是新來的目標c,我不是很清楚這個代表事情或我在代碼塊中提到的警告。有什麼問題?任何建議?
在你的MyView.h文件中確保你有這個:MyView:WhatYoureInheritingFrom –
JeffRegan
什麼是完整的「無法識別的選擇器」錯誤信息? –
默認情況下,UIImageview無法接受水龍頭。它的userInteractionEnabled設置爲NO。您可以將其更改爲「是」並嘗試。 – felix