2011-02-23 107 views
1

我有一个简单的(基于视图的)应用程序。我想要在自定义UIView上点击我的按钮,移动到该视图的某个位置(例如指向10,10)。UIButton在自定义UIView中的问题

  1. 我的自定义UIView是DrawView(DrawView.h和DrawView.m)。
  2. RotatorViewController(h。和.m)。

我添加到我的DrawView一个UIButton,连接插座我的DrawView和UIButton。我在RotatorViewController和@selector中添加UITapGestureRecognizer(tap :)。 这里是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' 

登录我需要你的帮助

回答

2

你说:

UITapGestureRecognizer在 RotatorViewController和 @selector(自来水:)

,你写道: UIGestureRecognizer *tapGR = [[UITapGestureRecognizer alloc] initWithTarget:drawView action:@selector(tap:)];

这意味着在drawView函数委托执行的操作,但你在RotatorViewController定义选择tap:

我觉得你只是通过self

UIGestureRecognizer *tapGR = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tap:)];

+0

愚蠢的错误,非常感谢!它工作正常。 – 2011-02-23 19:45:46

+0

不客气:) – klefevre 2011-02-23 19:54:44

0

的错误表示DrawView类的实例不以tap:消息作出响应。我看到你已经在DrawView.m中定义了tap:方法,但是你有没有在头文件中声明那个方法?像这样:

DrawView.h

@class UITapGestureRecognizer; 
@interface DrawView { 
    UIButton *myButton; 
} 
- (void) tap:(UITapGestureRecognizer *)gesture; 
@end 
+0

没有,似乎选择没有必要在头文件中声明替换目标drawView。谢谢你的想法! – 2011-02-23 19:46:55