我在尝试通过 UIView 获取触摸事件到它附加的子视图时遇到了麻烦。
我有许多图像想要做各种事情,所以我有兴趣阅读它们上的触摸事件。它工作正常,直到我决定将它们分组到 UIView 中,所以我猜我需要打开或关闭一些设置才能让事件通过。
[TouchImageView.h] -------------------------------------------------------
@interface TouchImageView : UIImageView
[TouchImageView.m] -------------------------------------------------------
- (id)initWithFrame:(CGRect)aRect {
if (self = [super initWithFrame:aRect]) {
// We set it here directly for convenience
// As by default for a UIImageView it is set to NO
self.userInteractionEnabled = YES;
state = 0 ;
rect = aRect ;
}
return self;
}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
// Do what you want here
NSLog(@"touchesBegan!" );
}
[in my delegate's didFinishLaunchingWithOptions] -------------------------
NSArray *myImages = [NSArray arrayWithObjects:
[UIImage imageNamed:@"front-photos.jpg"],
[UIImage imageNamed:@"front-films.jpg"],
[UIImage imageNamed:@"front-presentations.jpg"],
mainMenuView = [[UIView alloc] init ] ;
mainMenuView.userInteractionEnabled = YES; // tried setting this to both YES and NO. Same result.
[self.viewController.view addSubview:mainMenuView] ;
myImage = [[TouchImageView alloc] initWithFrame:CGRectMake(0.0f, menuTopHeight, menuButtonWidth, menuButtonHeight)];
[myImage setImage:[myImages objectAtIndex:0]] ;
[mainMenuView addSubview:myImage] ;
有人可以告诉我我做错了什么吗?我在SO上看到了很多关于这个主题的类似帖子,但其中大多数是关于设置userInteractionEnabled(?
事实证明,我需要为 UIView 定义一个框架。所以我改变了
mainMenuView = [[UIView alloc] init] ;
进入这个:
mainMenuView = [[UIView alloc] initWithFrame:[UIScreen mainScreen] bounds] ;
它又起作用了。
首先mainMenuView.userInteractionEnabled = NO;
应该YES
此外,UIImageView
userInteractionEnabled
被deafult设置为NO,因此您必须将其设置为"是"
在此行之后
[mainMenuView addSubview:myImage] ;
//add
myImage.userInteractionEnabled = YES;