我有一个简单的(基于视图的)应用程序。我想点击自定义UIView我的按钮移动到该视图内的某个位置(例如到10,10点)。
我在DrawView中添加一个UIButton,连接我的DrawView和UIButton的插座。我在RotatorViewController和@selector(tap :)中添加了UITapGestureRecognizer。 这是UITapGestureRecognizer的代码
- (void)viewDidLoad { [super viewDidLoad]; UIGestureRecognizer *tapGR = [[UITapGestureRecognizer alloc] initWithTarget:drawView action:@selector(tap:)]; [drawView addGestureRecognizer:tapGR]; [tapGR release]; }
@selector(抽头:)
- (void) tap:(UITapGestureRecognizer *)gesture { myButton.transform = CGAffineTransformMakeTranslation(10, 10); }
但是当我在DrawView应用程序崩溃的任何地方点击时。这是来自控制台的日志
2011-02-23 20:59:24.897 Rotator[7345:207] -[DrawView tap:]: unrecognized selector sent to instance 0x4d0fa80 2011-02-23 20:59:24.900 Rotator[7345:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[DrawView tap:]: unrecognized selector sent to instance 0x4d0fa80'
我需要你的帮助
答案 0 :(得分:2)
你说:
UITapGestureRecognizer in RotatorViewController和 @selector(抽头:)
你写道:
UIGestureRecognizer *tapGR = [[UITapGestureRecognizer alloc] initWithTarget:drawView action:@selector(tap:)];
这意味着操作是在drawView委托中执行的,但您在tap:
中定义了选择器RotatorViewController
。
我认为你只需要用drawView
self
UIGestureRecognizer *tapGR = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tap:)];
答案 1 :(得分:0)
该错误表示DrawView
类的实例不响应tap:
消息。我看到你在tap:
中定义了一个DrawView.m
方法,但是你在标题中声明了那个方法吗?像这样:
<强> DrawView.h 强>
@class UITapGestureRecognizer;
@interface DrawView {
UIButton *myButton;
}
- (void) tap:(UITapGestureRecognizer *)gesture;
@end