【问题标题】:Objective C - Tap Gesture countingObjective C - 点击手势计数
【发布时间】:2013-08-03 19:26:18
【问题描述】:

我的 View 上有一些 imageView,现在我想更改 imageView 中图像的 background.color。通过在同一个 imageView 上单击第二次,它应该会变为第一张图像。

我该怎么做?

【问题讨论】:

    标签: ios objective-c macos ipad


    【解决方案1】:

    保留 BOOL 或枚举 ivar 以跟踪图像状态。对点击做出反应时,交换图像。

    你可以有一个自定义的图像视图子类来保持这个状态总是与正确的对象相关联。

    // .h
    typedef enum { StateOriginal, StateFlipped } FlipState;
    
    @interface FlippableImageView : UIImageView
    @property (nonatomic, assign) FlipState state;
    @end
    
    // in view controller
    if (flipImageView.state == StateOriginal) {
      flipImageView.image = imageFlipped;
      flipImageView.state = StateFlipped;
    }
    else { 
      flipImageView.image = imageOriginal;
      flipImageView.state = StateOriginal;
    }
    

    该类还可以同时保存两个图像并运行漂亮的动画...

    【讨论】:

    • 我遇到的问题是,我不知道点击了哪个图像,因为它们没有在 .h 文件中定义。它们是通过从 XML 文件解析动态生成的。
    【解决方案2】:

    你可以有一个变量来检查你的 ImageView 被触摸了多少次。 这可以更改:

    - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;
    
    - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event;
    
    
    - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
    
    {
    
        UITouch *touch = [touches anyObject];
        if (touch.view == imageView) {
            // Make that variable ++;
            if (variable == 2){
                imageView.image = [UIImage imageNamed:@"a.png"];
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多