如何在 Swift 中 3 秒后从 AppDelegate 中删除FromSuperview

Posted

技术标签:

【中文标题】如何在 Swift 中 3 秒后从 AppDelegate 中删除FromSuperview【英文标题】:How to removeFromSuperview from AppDelegate after 3 seconds in Swift 【发布时间】:2015-11-30 22:18:27 【问题描述】:

当我在应用程序处于活动状态时收到推送通知时,我会创建一个显示的 UIView。问题是这种观点并没有消失,而是永远存在。这是代码:

    func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]) 

    let rect = CGRect(x: 0, y: 0, width: UIScreen.mainScreen().bounds.width, height: 65)

    let myView = UIView(frame: rect)

    let myViewLabel = UILabel(frame: rect)

    //myViewLabel.text = "Hola"

    myView.addSubview(myViewLabel)

    myView.backgroundColor = .orangeColor()

    if let aps = userInfo["aps"] as? NSDictionary 

        if let alert = aps["alert"] as? NSDictionary 

            if let message = alert["message"] as? NSString 

                //do stuff

            
         else if let alert = aps["alert"] as? NSString 

            if application.applicationState == .Active

                AudioservicesPlayAlertSound(SystemSoundID(kSystemSoundID_Vibrate))

                myViewLabel.text = alert as String

                self.window?.addSubview(myView)

            

        
    


专注于

self.window?.addSubview(myView)

它永远留在那里。我想做类似 animateWithDuration 之类的操作以在 3 秒内隐藏,但我找不到 AppDelegate 的方法。

有什么想法吗?

【问题讨论】:

查找NSTimer.scheduledTimerWithTimeInterval 【参考方案1】:

声明一个 3 秒的计时器

var timer = NSTimer()

    timer = NSTimer.scheduledTimerWithTimeInterval(3, target: self, selector: Selector("myFunc"), userInfo: nil, repeats: false)

    func myFunc()
       // Called after 3 seconds
    

【讨论】:

是的!这正是我所需要的。衷心感谢您。

以上是关于如何在 Swift 中 3 秒后从 AppDelegate 中删除FromSuperview的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS 中 x 秒后从 UIButton 更改 UIImage

如何在 Swift 中显示一条弹出消息,该消息在 3 秒后消失或可以由用户立即取消?

下载完成后从错误的线程访问领域 Swift 3

如何在 Swift 3 的 UIWebview 中会话过期?

登录 ios swift 后从 wkwebview 获取令牌

在 Swift 中 segue 后从堆栈中删除(删除)视图/视图控制器的正确方法