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

标签 ios objective-c uitapgesturerecognizer

我对 Objective 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)”,编辑器向我显示了主要函数,突出显示了我在那里的唯一一行,我根本没有碰过它(当我启动单 View 应用程序)。

我做错了什么?

最佳答案

我怀疑您正在创建一个 MenuButton 实例,它设置了这个点击手势识别器,但您没有保留 MenuButton 实例并且它被释放了。结果:点击手势识别正在对不再存在的对象调用 onTapMenuButton

您如何保留 MenuButton 对象?

关于ios - 在 iPhone 模拟器中点击图像时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23126487/

相关文章:

uitableview - Swift - 点击手势关闭键盘 UITableView

ios - JSONKit(或类似)生成的对象内的 NSNull 值

objective-c - 在 UINavigationViewController 的 Root View 中隐藏导航栏,但在其他 View 中显示

ios - 在 Objective C 中将字符串转换为 float 而不对其进行舍入。?

ios - 在 UIImageView 中设置 UIImage 时防止调整大小

iphone - 通过触摸传递到下面的 UIViews

ios - UIGesture 返回 UIImageView 而不是自定义 View

ios - 有没有办法知道 "setNeedsDisplay"的发送者是谁?

ios - AVCaptureSession 开始运行 exc_bad_access iOS 10 Swift 3

iphone - 如何等待 webViewDidFinishLoad 完成