【问题标题】:xcode touchesBegan multiple tasksxcode touches开始了多个任务
【发布时间】:2012-11-16 21:59:13
【问题描述】:

我正在使用 touchesBegan 和 touchesMoved 将 UIImageView 移动到您在屏幕上触摸的任何位置。它移动一个标记(我移动的 UIimageView),在 UIImageview 中绘制一个形状并读取一个图形。

但是,每当我尝试对这些数据执行任何操作(例如更新标签)时,UIImageView 都会匆匆回到它开始的位置,而不是停留在原来的位置。

-(void) touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event{

UITouch *myTouch =[[event allTouches] anyObject];
CGPoint location = [myTouch locationInView:self.view];

int x = location.x;
int y = location.y;

NSLog(@"x = %i",x);
NSLog(@"y = %i",y);

CGPoint p={x, y};
circles.center = p;

上面的代码可以正常工作并将图像移动到新位置。但是,我应该添加一些非常简单的东西,比如

changeInY.text = [NSString stringWithFormat:@"Main Label"];

并且 UIImageView(圆圈)不再位于 .center = p。标签更新了,UIImageView 在进行任何触摸之前冲回了我将它倾倒在情节提要上的地方。它肯定会移动,但会冲回来。如果没有标签指令,它会停留在原处并完成下一次触摸。

它会给出我的 x 位置和 y 位置并让我在 NSLog 语句中打印它们,但它不会让我用它们的值更新标签,或者做任何与 UIImageView 无关的事情. 我不想在运行时动态创建 UIImageView 。我想使用那个并移动它。 我相当确定它的 circles.center = p 线需要改变,但我不知道如何告诉它做出改变并留在那里。

非常欢迎任何帮助

【问题讨论】:

  • 我现在已经尝试了几十种方法。我尝试使用带有点击拦截器的手势识别器,我尝试将值保存到 NSUerdefaults 和 nsdictionary 并稍后使用。我尝试过touchesended,我尝试使用选择器并以设定的时间间隔执行,我尝试重新构图,我尝试哭泣,但它总是在我尝试做任何事情时将图像移回原始位置。我无法拦截这些触摸并使它们变得有用。只移动 uiimageview 或做其他事情。
  • 我试过 UITouchPhaseCancelled 和 UITouchPhaseEnded。我试过 [[self nextResponder] touchesBegan:touches withEvent:event];我试过[超级touchesbegan]。我现在有点抓稻草了。
  • 3 天,没有一条评论。我想我不会再使用这个网站了。

标签: xcode uiimageview touchesbegan


【解决方案1】:

在以各种可能的方式重写代码大约 14 小时后,我只需将有问题的标签放在“视图”框的顶部即可。我有某种分层问题。将标签放置在不可见的“视图”上后,我在过去两天尝试的几乎所有代码组合都有效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-17
    • 1970-01-01
    相关资源
    最近更新 更多