首页 文章

UIButton在自定义UIView中遇到麻烦

提问于
浏览
1

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

  • 我的自定义UIView是DrawView(DrawView.h和DrawView.m) .

  • RotatorViewController(h . 和.m) .

我添加到我的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];

}

@选择(自来水:)

- (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

    你说 :

    RotatorViewController和@selector中的UITapGestureRecognizer(点击:)

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

    这意味着操作在drawView委托中执行,但您在 RotatorViewController 中定义了选择器 tap: .

    我想你只需要通过 self 替换目标 drawView

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

  • 2

    该错误表示 DrawView 类的实例不响应 tap: 消息 . 我看到你在 DrawView.m 中定义了一个 tap: 方法,但是你在 Headers 中声明了这个方法吗?像这样:

    DrawView.h

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

相关问题