怎么样?我有一个带有IBAction滑动手势功能的IBOutlet UIImageView,但我只能刷一次对象。基本上,有一个5x5游戏板和2个类似石头的物体,我可以不断地在板上滑动。滑动一次,石头状物体移动直到到达板边界。
这里有一些代码(用于向下滑动石头_one)
- (IBAction)swipeDown:(UISwipeGestureRecognizer *)recognizer {
NSLog(@"Swipe Right");
// Get the view I'm interacting with, in this case, _one
UIView *view = recognizer.view;
if (view == _one) {
NSLog(@"Got it 2");
[self moveOne:CGPointMake(-1, 0) withView:view];
} else if (view == _two) {
NSLog(@"Got it 2.5");
[self moveTwo:CGPointMake(-1, 0) withView:view];
}
}
- (void)moveOne:(CGPoint)direction withView:(UIView*)stoneView {
NSLog(@"Got it 5");
// Bunch of code for getting new position
// .
// .
// .
[UIView animateWithDuration:0.35f
delay:0.0f
options:UIViewAnimationOptionCurveLinear
animations:^{
CGRect rect = stoneView.frame;
rect.origin.x = _currentCol*61.5;
rect.origin.y = _currentRow*61.5;
stoneView.frame = rect;
}
completion:^(BOOL finished) {
NSLog(@"Done finally");
}];
}
好的,所以当我运行这个并查看输出时,我的程序会进入"最后完成"在日志中。但我只能刷石头一次。想象一下2048,除了你只需要刷数字' 2'瓦片一次,然后再也不会与游戏互动。
每个石头的手势识别器实例都在ViewController.m中的viewDidLoad {}中创建,与滑动和移动方法相同。为什么我不能多次滑动?是否应该在完成中进行一些更新:'动画方法的块?
- 如果您需要更多信息,请告知我们