【问题标题】:Create click-through overlay instruction view创建点击覆盖指令视图
【发布时间】:2012-08-30 15:56:03
【问题描述】:

这里有一个非常简单的问题。 你如何创建这样的视图?

它必须在用户第一次运行应用程序的这一部分时覆盖,并且一旦用户点击它就被永久删除。我知道它应该是一个 UIImageView,但你如何让它处于活动状态,然后永远将其从视图中移除?

【问题讨论】:

    标签: iphone objective-c ios xcode uiimageview


    【解决方案1】:

    您可以使用UIView 类的addSubView 方法在您的应用委托的didFinishLaunchingWithOptions 方法中添加您的子视图。以下是一些关于如何进行的代码 sn-ps:

    - (BOOL)application:(UIApplication *)application 
    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {  
    
        UIImageView *imageView = [[UIImageView alloc] 
        initWithImage:[UIImage imageNamed:@"yourimage.png"]];
        [self.window addSubview:imageView];
    
         UITapGestureRecognizer * recognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)];
         recognizer.delegate = self;
        [imageView addGestureRecognizer:recognizer];
        imageView.userInteractionEnabled =  YES;
        self.imageView = imageView;
    }
    
    - (void) handleTap:(UITapGestureRecognizer *)recognize
    {
         [self.imageView removeFromSuperView];
    }
    

    请注意,您需要一个属性来在 handleTap 方法中引用您的 imageView。

    【讨论】:

    • 我从不兼容的类型 'AppDelegate *' 中得到“分配给 'id'” - 有什么建议吗?谢谢!
    • 您需要通过声明如下内容使您的 AppDelegate 符合 UIGestureRecognizerDelegate:yourAppDelegate()
    【解决方案2】:

    UIView 有你需要的所有方法,例如

    • 调用[myView addSubview:imgView]将图像视图添加到当前视图(myView
    • 完成后致电[imgView removeFromSuperview](即响应点击或计时器后)

    确保将imgViewuserInteractionEnabled 属性设置为NO,以便将触摸传递给myView

    【讨论】:

    • 为什么不让 subView 处理点击?
    • 你可以,但问题要求“点击”行为,所以我想发帖者更喜欢背景视图来处理触摸。
    • 好吧,他的标题具有误导性。不过他提到:“它必须在用户第一次运行应用程序的这一部分时覆盖,并且一旦用户点击它就永远被删除”所以他显然希望点击发生在覆盖视图上
    • 从用户的角度来看,点击会发生在覆盖上(因为,嗯,它是覆盖的);处理点击的代码可以位于任一视图中。
    • 请注意 userInteractionEnabled 属性设置为 NO 作为 UIImageView 的默认值
    【解决方案3】:

    我的想法是设置一个 NSUserDefault 变量并在 applicationDidFinishLaunchingWithOptions 或应用程序中其他有意义的地方检查它。当您的变量为真与假时,您可以只推送一个单独的视图。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-10
      • 2014-07-16
      • 1970-01-01
      • 1970-01-01
      • 2011-02-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多