gpt4 book ai didi

ios - (iOS) 拖放、对齐网格、勾选合适区域

转载 作者:行者123 更新时间:2023-11-28 18:33:18 25 4
gpt4 key购买 nike

我已经阅读了所有关于拖放和 gestureRecognizer 的内容,但还没有找到解决方案。我得到了“gamefield”10x10,我想通过对齐网格实现拖放,并检查元素是否放置在“gamefield”上。

我使用 action:@selector(imageMoved:withEvent:) 将我的 8 个“TempButtons”添加到 UIView buttonsSuperView。

- (IBAction) imageMoved:(id) sender withEvent:(UIEvent *) event
{
UIControl *control = sender;
originalPosition = [self getButton:sender];

UITouch *touch = [[event allTouches] anyObject];

point = [touch locationInView:control];

float step = 31.0; // Grid step size.
CGPoint center = control.center;
center.x += step * floor((point.x / step));
center.y += step * floor((point.y / step));

control.center = center;
}

它起作用了,我可以移动网格步长为 31px 的任何按钮。我可以把它放在任何地方,但我必须把它放在 UIView fieldView 上。如果它放在那里就可以了,我可以将它替换在另一个瓷砖上。但是如果我把它放在 fieldView 外面,按钮应该回到它的位置。像这样:

if ([self.fieldView pointInside:point withEvent:nil])
{
control.center = center;
} else {
[UIView animateWithDuration:0.4
delay:0.0
options:UIViewAnimationOptionCurveEaseInOut
animations:^ {
control.center = originalPosition;
// to
}
completion:^(BOOL finished) {}];
}

如果此代码放在 - (IBAction) imageMoved:(id) sender withEvent:(UIEvent *) 事件方法上,它会使按钮在移动时始终回到其“原始位置”。但我需要检查它是否仅在“touchesEnded”上正确放置。但这是另一种方法,我不明白如果放置不当如何实现按下哪个按钮及其原始坐标。

也许有更好的方法来使用“UIView”而不是“UIButton”,但我仍然不明白该怎么做。

提前致谢。亲切的问候,

尼克

最佳答案

由于没有人回答我的问题,我花了一些时间找到了可行的解决方案。

- (IBAction) imageMoved:(id) sender withEvent:(UIEvent *) event
{
dragObject = sender;
originalPosition = [self getButton:sender];

UITouch *touch = [[event allTouches] anyObject];

point = [touch locationInView:dragObject];

float step = 31.0; // Grid step size.
CGPoint center = dragObject.center;
center.x += step * floor((point.x / step));
center.y += step * floor((point.y / step));

dragObject.center = center;

[sender addTarget:self action:@selector(touchesEnded:withEvent:) forControlEvents:UIControlEventTouchUpInside];

}

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
if (![fieldView pointInside:dragObject.center withEvent:nil])
{
[UIView animateWithDuration:0.4
delay:0.0
options:UIViewAnimationOptionCurveEaseInOut
animations:^ {
dragObject.center = CGPointMake(originalPosition.x + 15.5, originalPosition.y + 15.5);
}
completion:^(BOOL finished) {}];
}
}

现在它就像魅力一样有效,我可以继续前进。我的按钮可以自由移动并捕捉到网格,当放在游戏区域之外时,它们会回到原来的位置。

问候,尼克

关于ios - (iOS) 拖放、对齐网格、勾选合适区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23802307/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com