【问题标题】:Making images appear... How?使图像出现...如何?
【发布时间】:2011-02-27 13:21:42
【问题描述】:

有人可以告诉我如何在用户点击屏幕时显示图像并使其出现在点击的位置。 提前致谢, 泰特

【问题讨论】:

  • 请不要重复提问。您可以编辑现有的,这会将其推到活动任务的顶部并可能获得更多关注,并且(一旦您积累了一些代表)您可以提供赏金。我会将此标记为版主作为合并的候选者,但供将来参考不要这样做!
  • 是的,请不要重复发布。我把你的两个问题合并在一起了。无论您拥有多少声誉,您都可以随时编辑自己的帖子。您也可以在自己的问题和问题的答案上留下 cmets,因此请在适当的情况下使用 cmets 而不是答案。有关详细信息,请参阅FAQ

标签: iphone uiimageview touch ipod-touch tap


【解决方案1】:

UIViewUIResponder 的子类,它具有以下可能有用的方法:-touchesBegan:withEvent:-touchesEnded:withEvent:-touchesCancelled:withEvent:-touchesMoved:withEvent:

每一个的第一个参数是NSSetUITouch 对象。 UITouch 有一个 -locationInView: 实例方法,它应该在你的视图中产生点击的位置。

【讨论】:

    【解决方案2】:

    您可以创建一个初始星形,并在每次触摸视图时移动它。 我不确定你的最终结果会是什么样子。

    注意: 此代码将为您提供 1 颗星,只需轻轻一按即可移动 这是我的代码:-

    (void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
        NSSet *allTouches = [event allTouches];
        switch ([allTouches count]) {
            case 1:
            {
                UITouch *touch = [[allTouches allObjects] objectAtIndex:0];
                CGPoint point = [touch locationInView:myView];
                myStar.center = point;  
                break;
            }
            default:
                break;
        }
    }
    

    【讨论】:

      【解决方案3】:

      您希望用户能够点击屏幕上的任何位置并在他们点击的位置绘制图像,这似乎暗示了您的问题?而不是在指定位置点击并让图像出现在那里?

      如果是这样,您可能必须使用自定义视图。在这种情况下,您可以执行以下操作:

      1. 创建UIView 的子类。
      2. 覆盖touchesBegan 方法。调用[[touches anyObject] locationInView:self](其中touches 是该方法的第一个参数,UITouch 对象中的NSSet)以获取触摸的位置并记录下来。
      3. 覆盖touchesEnded 方法。使用与第 2 步相同的方法确定位置触摸结束。
      4. 如果第二个位置靠近第一个位置,您需要将图像放置在该位置。记录该位置并调用 [self setNeedsDisplay] 以重新绘制自定义视图。
      5. 覆盖drawRect 方法。此处,如果位置已在步骤 4 中设置,您可以使用 UIImage 方法 drawAtPoint 在所选位置绘制图像。

      For further details, this link might be worth a look。希望对您有所帮助!

      编辑:我注意到你以前问过基本相同的问题。如果您对那里给出的答案不满意,通常认为“撞”旧答案更好,也许通过编辑它以要求进一步澄清,而不是创建一个新问题。

      编辑:根据要求,下面是一些非常简短的示例代码。这可能不是最好的代码,而且我还没有测试过它,所以它可能有点不确定。为澄清起见,THRESHOLD 允许用户在点击时稍微移动手指(最多 3 像素),因为不移动手指就很难点击。

      MyView.h

      #define THRESHOLD 3*3
      
      @interface MyView : UIView
      {
          CGPoint touchPoint;
          CGPoint drawPoint;
          UIImage theImage;
      }
      
      @end
      

      MyView.m

      @implementation MyView
      
      - (id) initWithFrame:(CGRect) newFrame
      {
          if (self = [super initWithFrame:newFrame])
          {
              touchPoint = CGPointZero;
              drawPoint = CGPointMake(-1, -1);
              theImage = [[UIImage imageNamed:@"myImage.png"] retain];
          }
      
          return self;
      }
      
      - (void) dealloc
      {
          [theImage release];
          [super dealloc];
      }
      
      - (void) drawRect:(CGRect) rect
      {
          if (drawPoint.x > -1 && drawPoint.y > -1)
              [theImage drawAtPoint:drawPoint];
      }
      
      - (void) touchesBegan:(NSSet*) touches withEvent:(UIEvent*) event
      {
          touchPoint = [[touches anyObject] locationInView:self];
      }
      
      - (void) touchesEnded:(NSSet*) touches withEvent:(UIEvent*) event
      {
          CGPoint point = [[touches anyObject] locationInView:self];
          CGFloat dx = point.x - touchPoint.x, dy = point.y - touchPoint.y;
      
          if (dx + dy < THRESHOLD)
          {
              drawPoint = point;
              [self setNeedsDisplay];
          }
      }
      
      @end
      

      【讨论】:

        猜你喜欢
        • 2017-08-30
        • 2015-09-03
        • 2023-03-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多