我正在尝试将一些视图添加到屏幕中,并且我希望它们能够被用户移动到屏幕中的任何其他位置(使用平移手势)。
我已经通过代码创建了视图及其内容,它工作正常,但手势识别器无法调用操作方法。当我触摸任何视图时(每当我尝试触发其中一个识别器时)我收到此错误并且应用程序崩溃:
-[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 并解决这个问题。
如果有人可以纠正我,那就太好了。提前致谢。