UIButton在自定义UIView中遇到麻烦

时间:2011-02-23 19:22:56

标签: iphone objective-c ios4 uiview uigesturerecognizer

我有一个简单的(基于视图的)应用程序。我想点击自定义UIView我的按钮移动到该视图内的某个位置(例如到10,10点)。

  1. 我的自定义UIView是DrawView(DrawView.h和DrawView.m)。
  2. RotatorViewController(h。和.m)。
  3. 我在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'
    

    我需要你的帮助

2 个答案:

答案 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