我对 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/