在iPhone模拟器中点击图像时出错

时间:2014-04-17 06:54:48

标签: ios objective-c uitapgesturerecognizer

我对客观c和iOS开发很新,我觉得有时候我会把头撞到砖墙上......

我正在以编程方式将图像作为菜单按钮添加到服务器的屏幕上。我有一个处理该按钮的类。这是.h文件:

#import <Foundation/Foundation.h>

@interface MenuButton : NSObject <UIGestureRecognizerDelegate>

@property UIImageView * menuButton;
- (id) initWithButton: (UIImageView *) mb;
- (void) onTapMenuButton;
@end

这是.m文件:

#import "MenuButton.h"

@implementation MenuButton

- (id) initWithButton: (UIImageView *) mb {
    self = [super init];

    if(self) {
        self.menuButton = mb;

        UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onTapMenuButton)];
        tap.numberOfTapsRequired = 1;
        [self.menuButton addGestureRecognizer:tap];
        tap.delegate = self;
    }

    return self;
}

- (void) onTapMenuButton {
    NSLog(@"SUCCESS!");
}

@end

每当我点击按钮,程序就会停止运行。在输出窗口中,我只能看到一些文字:“(lldb)”,编辑器向我显示主要功能,突出显示我在那里的唯一一条线,我根本没有碰到过(我自动创建的那条线)启动单视图应用程序。)

我做错了什么?

1 个答案:

答案 0 :(得分:1)

我怀疑您正在创建一个MenuButton实例,该实例会设置此点击手势识别器,但您不会保留MenuButton实例并且它会被取消分配。结果:点击手势识别正在对不再存在的对象调用onTapMenuButton

你如何保持MenuButton对象?