Ios 在iPhone模拟器中点击图像时出错
我对objective c和iOS开发相当陌生,有时我觉得我的头撞到了砖墙上 我正在以编程方式将一个图像作为菜单按钮添加到服务器的屏幕中。我有一个班级在处理那个按钮。这是.h文件:Ios 在iPhone模拟器中点击图像时出错,ios,objective-c,uitapgesturerecognizer,Ios,Objective C,Uitapgesturerecognizer,我对objective c和iOS开发相当陌生,有时我觉得我的头撞到了砖墙上 我正在以编程方式将一个图像作为菜单按钮添加到服务器的屏幕中。我有一个班级在处理那个按钮。这是.h文件: #import <Foundation/Foundation.h> @interface MenuButton : NSObject <UIGestureRecognizerDelegate> @property UIImageView * menuButton; - (id) initW
#import <Foundation/Foundation.h>
@interface MenuButton : NSObject <UIGestureRecognizerDelegate>
@property UIImageView * menuButton;
- (id) initWithButton: (UIImageView *) mb;
- (void) onTapMenuButton;
@end
每当我点击按钮,程序就会停止运行。在输出窗口中,我能看到的只是一些文本:“(lldb)”,编辑器向我显示了主函数,突出显示了我在那里的唯一一行,我根本没有触及它(启动单个视图应用程序时自动创建的那一行)
我做错了什么?我怀疑您正在创建一个菜单按钮实例,该实例设置了此点击手势识别器,但您没有保留菜单按钮实例,它将被解除分配。结果:点击手势识别正在对不再存在的对象调用
onTapMenuButton
你是如何控制菜单按钮对象的?你能把用于图像视图实现的代码放在屏幕上吗?你在哪里创建了mb?共享创建图像视图mb的代码。这就是您似乎遇到问题的地方。注意:您需要让您的
onTapMenuButton
方法接受一个参数,一个UITapGestureRecognitor,以便您可以检查手势识别器的状态。从现在开始(解决崩溃后),当用户第一次按下图像视图、松开按钮(您真正想要的按钮)以及手势被取消时,将调用该方法。请参阅本文顶部的示例代码。别忘了更改操作选择器。谢谢,这确实是问题所在。。。我想,习惯需要一点时间。我刚刚将保存MenuButton实例的变量移到层次结构的更高层,现在它开始工作了。
#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