0

我正在尝试将一些视图添加到屏幕中,并且我希望它们能够被用户移动到屏幕中的任何其他位置(使用平移手势)。

我已经通过代码创建了视图及其内容,它工作正常,但手势识别器无法调用操作方法。当我触摸任何视图时(每当我尝试触发其中一个识别器时)我收到此错误并且应用程序崩溃:

-[UIView panThisNote:]: unrecognized selector sent to instance 0x1b0500

这是创建视图并分配所需值的代码:

for (int i = 1; i <= self.NOP; i++)
{
    UIView *stateView = [[UIView alloc] initWithFrame:CGRectMake((arc4random()%700)-100 , (20 * 91) + 378 + ((arc4random()%600)+200), 325 , 188)];
    UIImageView *imgView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 325, 188)];
    imgView.image = [UIImage imageNamed:[NSString stringWithFormat:@"L7_stickyNote_%d.png",arc4random()%4]];
    int randomSign = ( arc4random()%2 == 0 ? 1 : -1 );
    CGAffineTransform transform = CGAffineTransformMakeRotation( randomSign * M_PI/((arc4random()%35)+2) );
    stateView.transform = transform;
    [stateView addGestureRecognizer:[[UIPanGestureRecognizer alloc] initWithTarget:stateView action:@selector(panThisNote:)]];
    UITextView *textView = [[UITextView alloc] initWithFrame:CGRectMake(20, 20, 283, 146)];
    textView.text = [self.finalStates objectAtIndex:i-1];
    textView.userInteractionEnabled = NO ;
    textView.backgroundColor = [UIColor clearColor];
    textView.textAlignment = UITextAlignmentCenter;
    textView.font = [UIFont fontWithName:@"Noteworthy" size:14];
    [stateView addSubview:imgView];
    [stateView addSubview:textView];
    [self.BGPaper addSubview:stateView];
}

我不确定,但我想我知道为什么会发生这种情况(我认为这是因为在循环中使用相同名称创建的对象的内存分配)但我不知道应该如何添加 GestureRecognizers 并解决这个问题。

如果有人可以纠正我,那就太好了。提前致谢。

4

1 回答 1

0

您的手势识别器正在定位stateView,这是一个UIView,因此显然没有实现 panThisNote:。你需要重新考虑你在做什么。

于 2012-09-29T20:13:53.307 回答