ios - Swift 3 无法使用 UIWindow 调用函数

标签 ios swift xcode uiwindow

    let PostButton: UIButton = {
    let pB = UIButton(type: .system)
    pB.setTitle("Post", for: .normal)
    pB.titleLabel!.font = UIFont(name: "Arial Rounded MT Bold", size:18)
    pB.setTitleColor(UIColor .green, for: .normal)
    pB.translatesAutoresizingMaskIntoConstraints = false
    pB.addTarget(self, action: #selector(postingTextPost), for: .touchUpInside)
    return pB
}()


func postingTextPost(){

...

}

func setupTextWindow(){

    let window: UIWindow = UIApplication.shared.keyWindow!

    let blurEffect = UIBlurEffect(style: UIBlurEffectStyle.dark)
    let blurEffectView = UIVisualEffectView(effect: blurEffect)
    blurEffectView.frame = window.bounds
    blurEffectView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
    window.addSubview(blurEffectView)

    window.addSubview(PostBarContainer)
    window.addSubview(PostBar)
    window.addSubview(PostButton)

    PostBarContainer.centerXAnchor.constraint(equalTo: window.centerXAnchor).isActive = true
    PostBarContainer.bottomAnchor.constraint(equalTo: window.centerYAnchor).isActive = true
    PostBarContainer.widthAnchor.constraint(equalTo: window.widthAnchor).isActive = true
    PostBarContainer.heightAnchor.constraint(equalToConstant: 50).isActive = true

    PostBar.bottomAnchor.constraint(equalTo: PostBarContainer.bottomAnchor).isActive = true
    PostBar.widthAnchor.constraint(equalTo: PostBarContainer.widthAnchor, constant: -80).isActive = true
    PostBar.heightAnchor.constraint(equalTo: PostBarContainer.heightAnchor).isActive = true

    PostButton.bottomAnchor.constraint(equalTo: PostBarContainer.bottomAnchor).isActive = true
    PostButton.widthAnchor.constraint(equalToConstant: 90).isActive = true
    PostButton.rightAnchor.constraint(equalTo: PostBar.rightAnchor, constant: 80).isActive = true
    PostButton.heightAnchor.constraint(equalTo: PostBarContainer.heightAnchor).isActive = true

     }

我在 UIViewController 中有一些代码来执行 post 函数。但是,在 UIWindow 中,我无法将该函数称为“它可能是有史以来最小的问题”。该函数也在viewcontroller 内部。它与函数无关,只是没有通过 PostButton 上的 #selector 调用。

我知道我在这里缺少一些东西,但是就在键窗口内执行功能而言,最佳实践是什么?我知道无论如何都不应该把所有东西都扔到 View Controller 中,但是,是的,对于一些建议/提示也非常有用! <3

最佳答案

按钮的操作是否未被识别,或者只是没有调用正确的函数?

如果客人没有被识别,那么我相信这与父 View 是 UIViewController 而不是 UIWindow 有关。您正在初始化按钮并添加访客识别器,将父级设置为“self”。在这种情况下,Self 将是 UIViewController,而实际上父 View 需要是 UIWindow。我建议将窗口更改为类级别常量,然后将您的访客识别行更改为

pB.addTarget(window, action: #selector(postingTextPost), for: .touchUpInside)

关于ios - Swift 3 无法使用 UIWindow 调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45641137/

相关文章:

ios - react native 套接字io不会从客户端发出任何事件

ios - 如何使用 Storyboard和自动布局在 UIScrollView 中添加动态高度/空间元素?

swift - 创建 CFDictionary

iphone - 我的 iOS 应用程序名称中有一个 +。因此 bundle 无效。需要帮助解决

ios - 如何使用 NSUserDefault 保存新旧数据

ios - Swift 自动布局在 Xcode 9.3 中不起作用

iOS 核心数据合并策略 - NSMergeByPropertyStoreTrumpMergePolicy

jquery - 当固定位置 div 处于事件状态时禁用 iPad、iPhone 上的滚动

ios - 在 iOS 中下载文件的内存管理

ios - 全景 View iOS