Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/93.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在iPhone模拟器中点击图像时出错_Ios_Objective C_Uitapgesturerecognizer - Fatal编程技术网

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

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

我对objective c和iOS开发相当陌生,有时我觉得我的头撞到了砖墙上

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

#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