我正在尝试在我的 ViewController 的 viewDidLoad 中创建一个 UISwipeGestureRecognizer,它将使用一个选择器来调用另一个对象 (MyScene) 中的一个方法。但是,我收到以下错误:
Use of undeclared identifer 'action'
是否有这不起作用的原因?
示例代码:
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
// Configure the view.
SKView * skView = (SKView *)self.view;
if (!skView.scene) {
skView.showsFPS = YES;
skView.showsNodeCount = YES;
// Create and configure the scene.
SKScene * scene = [MyScene sceneWithSize:skView.bounds.size];
scene.scaleMode = SKSceneScaleModeAspectFill;
// Present the scene.
[skView presentScene:scene];
UISwipeGestureRecognizer *swipeRight = [[UISwipeGestureRecognizer alloc] initWithTarget:(MyScene) action:@selector(screenSwipedRight)];
swipeRight.numberOfTouchesRequired = 1;
swipeRight.direction=UISwipeGestureRecognizerDirectionRight;
[self.view addGestureRecognizer:(swipeRight)];
UISwipeGestureRecognizer *swipeLeft = [[UISwipeGestureRecognizer alloc] initWithTarget:(MyScene) action:@selector(screenSwipedLeft)];
swipeLeft.numberOfTouchesRequired = 1;
swipeLeft.direction=UISwipeGestureRecognizerDirectionLeft;
[self.view addGestureRecognizer:(swipeLeft)];
UISwipeGestureRecognizer *swipeUp = [[UISwipeGestureRecognizer alloc] initWithTarget:(MyScene) action:@selector(screenSwipedUp)];
swipeUp.numberOfTouchesRequired = 1;
swipeUp.direction=UISwipeGestureRecognizerDirectionUp;
[self.view addGestureRecognizer:(swipeUp)];
}
}
如果需要更多详细信息,我很乐意提供任何其他信息。
感谢您花时间提供帮助!
最佳答案
目标需要是一个类的实例:
UISwipeGestureRecognizer *swipeRight = [[UISwipeGestureRecognizer alloc] initWithTarget:(MyScene) action:@selector(screenSwipedRight)];
可能需要:
UISwipeGestureRecognizer *swipeRight = [[UISwipeGestureRecognizer alloc] initWithTarget: scene action:@selector(screenSwipedRight)];
Merhod screenSwipedRight
应该是 MyScene
类的公共(public)方法。
关于ios - 在另一个对象中初始化 UISwipeGestureRecognizer 时使用未声明的标识符 'action',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20832547/