自定义类:
tapReconizer.h:
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
@interface tapReconizer : NSObject {
UIView* myView;
}
-(void) tapreg:(UIView*)view;
@end
tapReconizer.m:
#import "tapReconizer.h"
@implementation tapReconizer
-(void) tapreg:(UIView*)view {
myView = view;
UITapGestureRecognizer *tapGestureRecognizer;
tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(singleTap:)];
tapGestureRecognizer.numberOfTapsRequired = 1;
[myView addGestureRecognizer:tapGestureRecognizer];
}
- (void)singleTap:(UIGestureRecognizer *)recognizer {
[myView endEditing:true];
}
@end
在我的viewcontorller中:
tapReconizer* reg = [[tapReconizer alloc]init];
[reg tapreg:self.view];
但它似乎是单一的:没有被调用。 我可以在这个自定义类中完成所有这些吗?
提前致谢。答案 0 :(得分:0)
当tapReconizer
实例(reg
)在创建它的任何块的末尾超出范围时,它会被释放。
你需要对它有强烈的引用。最简单的方法可能是使reg
成为实例变量。
仅供参考 - 您可能想要为您的班级TapRecognizer
命名。你拼错识别器,标准类以大写字母开头是标准做法。方法和变量名以小写开头。
答案 1 :(得分:0)
在View控制器中
tapReconizer* reg = [[tapReconizer alloc]init];
[reg tapreg:self.view];
这里reg正在被取消分配,所以让它变得强大全球化。
在viewcontroller.h中声明它
@property (strong, nonatomic) TapReconizer* reg;
或在你的.h或.m视图控制器中 之后
@interface ViewController : UIViewController
{
TapReconizer* reg;
}
希望它会对你有所帮助。