我一直在寻找并试图用UIWebView for iOS解决一个问题。
我有一个非常小的应用程序,它只是加载我的网站,源代码位于https://github.com/pjuu/iotter。
在用户点击已发布图片的网站上,它会将图片网址加载到网络视图中。这使他们陷入困境,无法回到网站的其他部分。
我想要做的是在右上角显示一个(x)按钮(无论正在使用什么屏幕旋转),并在浏览器中执行后退操作。
我知道这个问题不是代码问题,因为我可以对其中的Swift代码部分进行排序。我无法为我的生活找到如何以编程方式添加按钮并将其显示在webview上。
我能找到的唯一教程包括创建一个工具栏来执行这些类型的操作,我认为在查看图像时会占用很多空间。
问题很简单:
我将使用正则表达式检查request.path
参数,只有在与图片网址匹配时才会显示。
如果这不适合SO,请道歉。我很乐意将问题或帖子移到另一个网站上。
提前感谢您的帮助。我不是移动开发人员,所以使用XCode和故事板的东西对我来说远离vim。
答案 0 :(得分:7)
<强>参考:强>
2)UIWebViewDelegate: https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIWebViewDelegate_Protocol/#//apple_ref/occ/intfm/UIWebViewDelegate/webView:shouldStartLoadWithRequest:navigationType:
<强> SOLUTION:强>
1)创建&#34; X&#34;的UIButton:强>
// Define the UIButton
let button = UIButton(type: UIButtonType.System) as UIButton
let image = UIImage(named: "name") as UIImage?
button.frame = CGRectMake(self.view.frame.width - 60, 30, 35, 35)
button.setTitle("Test Button", forState: UIControlState.Normal)
button.setImage(image, forState: .Normal)
button.addTarget(self, action: "buttonAction:", forControlEvents: UIControlEvents.TouchUpInside)
self.view.addSubview(button)
//Hide the UIButton
button.hidden = true
2)检测imageUrl何时打开并生成&#34; X&#34; UIButton出现:
// This function is triggered every time a request is made:
optional func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool {
let string = request.URL
if string.rangeOfString(".png") || string.rangeOfString(".jpg")|| string.rangeOfString(".jpeg"){
// code to make cross appear
// for example:
self.button.hidden = false
}
}
3)最后,您需要创建一个关闭页面的方法,当&#34; X&#34; UIButton被点击:
func btnPressed(sender: UIButton!) {
if(webview.canGoBack) {
//Go back in webview history
webview.goBack()
} else {
//Pop view controller to preview view controller
self.navigationController?.popViewControllerAnimated(true)
}
}
<强> N.B:强>
在行中:
let image = UIImage(named: "cross.png") as UIImage?
button.setImage(image, forState: .Normal)
我们将UIButton设置为十字架的图像。 您需要将十字图像添加到XCode项目并设置&#34; cross.png&#34;字符串到图像的确切名称:&#34; nameOfImage.fileType&#34;。
答案 1 :(得分:0)
简单的一线解决方案。
在情节提要中或以编程方式创建所需的“关闭”按钮。
然后,只需将WebView发送到视图控制器中显示的所有当前视图的后面:
view.sendSubviewToBack(yourWebView)
现在,所有视图(包括您创建的任何按钮)将显示在顶部。只要确保在创建所有所需视图后添加此行即可。