swift - Swift 5,无法显示此文本
问题描述
当我有一个尝试连接到网络的进程并且在尝试加载网页之前,我试图在 iPhone 上显示一些文本。在主 ViewController 我尝试了以下但未显示:
@IBOutlet var mWebKit: WKWebView!
let myURL = URL(string: "https:theurl.com")
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
let request = URLRequest(url: myURL!)
mWebKit.navigationDelegate = self // Start monitor WebKit output
let testlabel = UILabel(frame: CGRect(x: 0, y: 0, width: mWebKit.frame.size.width, height: mWebKit.frame.size.height))
testlabel.textAlignment = .center
testlabel.font = UIFont(name: "Helvetica-Bold", size: 32)
testlabel.textColor = .red
testlabel.text = "TESTING"
mWebKit.addSubview(testlabel)
CheckVPNConnetionLoop()
testlabel.removeFromSuperview()
mWebKit.load(request) // load page
}
因此,当应用程序加载时 VPN 需要一段时间才能在 iPhone 上连接时,CheckVPNConnectionLoop() 可能会在放弃之前运行 6 秒或更长时间。想要在之前有一些文字或我的微调器显示并在之后消失。但是在手机上运行它时我看不到内容。在模拟器上它的工作方式完全不同,所以不会依赖它。有什么想法我做错了吗?
解决方案
认为它正在工作,但是当我放回 removefromsuperview 时,它并不是那么认为 jnpdx 是正确的。我基本上在那个 CheckVPNConnectionLoop 中循环,如果它没有连接,每次运行它会打盹 3 秒钟,然后再试一次。里面有什么:
func checkConnection(completionHandler:@escaping (_ isOnline: Bool?) -> Void){
let stringurl = "http://" + "<ip>"
let url = NSURL(string: stringurl)
let task = URLSession.shared.dataTask(with: url! as URL) {(data, response, error) in
let httpResponse = response as? HTTPURLResponse
if (httpResponse?.allHeaderFields["Date"] as? String) != nil {
let isConnected = true
completionHandler(isConnected)
}else{
let isConnected = false
completionHandler(isConnected)
}
}
task.resume()
}
也就是说,在这个过程完成如此混乱之前,我不会根据我的判断调用 webview。
推荐阅读
- python - 使用 C 扩展模块运行 tox
- c# - C# - 查找和替换文件中的特定字符串
- git - 有没有办法使用 TortoiseGit 初始化远程 git 存储库?
- ios - 无法在 iOS 中使用 UIActivityViewController 通过 Twitter 发布视频
- javascript - 递归过滤布尔键的数据
- google-maps - 如何在内联 svgs 中使用颜色代码(谷歌地图)
- javascript - 添加负载搜索微调器
- android - 在活动中工作但在片段中不工作的覆盖函数
- .net - 只有 msbuild 14 或 msbuild 15 支持 SonarQube 分析
- scala - Monix Task.sleep 和单线程执行