Iphone 自定义UIView中的UIButton故障

Iphone 自定义UIView中的UIButton故障,iphone,objective-c,ios4,uiview,uigesturerecognizer,Iphone,Objective C,Ios4,Uiview,Uigesturerecognizer,我有一个简单的(基于视图的)应用程序。我想在点击自定义UIView时,我的按钮移动到该视图内的某个位置(例如,点10,10) 我的自定义UIView是DrawView(DrawView.h和DrawView.m) RotatorViewController(h.和.m) 我在我的DrawView中添加了一个UIButton,并与我的DrawView和UIButton连接。我在RotatorViewController和@selector(点击:)中添加UITapGestureRecognitor

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

  • 我的自定义UIView是DrawView(DrawView.h和DrawView.m)
  • RotatorViewController(h.和.m)
  • 我在我的DrawView中添加了一个UIButton,并与我的DrawView和UIButton连接。我在RotatorViewController和@selector(点击:)中添加UITapGestureRecognitor。 这是UITapGestureRecognitor的代码

    - (void)viewDidLoad { [super viewDidLoad]; UIGestureRecognizer *tapGR = [[UITapGestureRecognizer alloc] initWithTarget:drawView action:@selector(tap:)]; [drawView addGestureRecognizer:tapGR]; [tapGR release]; } -(无效)viewDidLoad { [超级视图下载]; UIGestureRecognizer*tapGR=[[UITapGestureRecognizer alloc]initWithTarget:drawView操作:@selector(点击:)]; [drawView AddGestureRecognitor:tapGR]; [tapGR释放]; } @选择器(点击:)

    -(无效)轻触:(UITapgestureRecognitor*)手势{ myButton.transform=CGAffineTransformMakeTransform(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' 2011-02-23 20:59:24.897旋转器[7345:207]-[DrawView抽头:]:未识别的选择器发送到实例0x4d0fa80 2011-02-23 20:59:24.900 Rotator[7345:207]***由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:'-[DrawView tap:::]:未识别的选择器发送到实例0x4d0fa80'
    我需要您的帮助

    此错误表示
    DrawView
    类的实例没有响应
    tap:
    消息。我看到您在
    DrawView.m
    中定义了一个
    tap:
    方法,但是您是否在标题中声明了该方法?像这样:

    DrawView.h

    你说:

    中的UITapGestureRecognitor RotatorViewController和 @选择器(点击:)

    你写道:
    UIGestureRecognizer*tapGR=[[UITapGestureRecognizer alloc]initWithTarget:drawView操作:@selector(点击:)]

    这意味着操作在drawView委托中执行,但您在旋转视图控制器中定义了选择器
    点击:

    我认为您只需将目标
    drawView
    替换为
    self


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

    否,似乎不需要在头文件中声明选择器。谢谢你的想法! 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'
    @class UITapGestureRecognizer;
    @interface DrawView {
        UIButton *myButton;
    }
    - (void) tap:(UITapGestureRecognizer *)gesture;
    @end