UIImageView子类触摸检测

时间:2010-03-03 07:06:22

标签: iphone objective-c cocoa-touch uiimageview touch

我有一个UIImageView的子类,我需要知道什么时候被触及。 (下面的完整代码。)我找到并阅读了thisthis。它们有点温和,但都没有真正起作用。不仅没有调用我的touchesBegan:withEvent:方法,还按下了图像后面的按钮。

这是我的代码:

标题文件:

@interface MathKeyboardKey : UIImageView
{

}

@end

实施档案:

@implementation MathKeyboardKey

- (id)initWithImage:(UIImage *)image
{
    if (self = [super initWithImage:image])
    {
        //init here
    }
    return self;
}

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    NSLog(@"-- I AM TOUCHED --");
}

- (void)dealloc
{
    [super dealloc];
}

@end  

致电代码:

{
    self.userInteractionEnabled = NO;

    mathKeyboardAccess = [[MathKeyboardKey alloc] initWithImage:[UIImage imageNamed:@"mathKey.png"]];
    CGRect frm = mathKeyboardAccess.frame;
    frm.origin = CGPointMake(80, 171);
    mathKeyboardAccess.frame = frm;
    mathKeyboardAccess.userInteractionEnabled = YES;
    [self addSubview:mathKeyboardAccess];
}

此视图将作为另一个(MathKeyboard)的子视图添加。 superview无法启用用户交互,因为它覆盖了另一个视图(系统键盘)。当我尝试将MathKeyboardKey添加到系统键盘视图时,它不会显示。如果我尝试使用UIButton,它就不会出现,无论我把它放在哪个视图中。

如果不明显,问题是:如何检测此UIImageView子类中的触摸?

1 个答案:

答案 0 :(得分:1)

self.userInteractionEnabled = NO;

由于您已禁用父视图的用户交互,因此子级如何接收任何交互?删除此行。