如何覆盖UIWebView顶部的UIButton(closures)button?

我一直在寻找和尝试解决我用iOS的UIWebView的问题。

我有一个非常小的应用程序,只是加载我的网站源代码居住在https://github.com/pjuu/iotter 。

在网站上,当用户点击张贴的图像时,它将图像URL加载到网页视图中。 这让他们陷入困境,无法返回到网站的其他部分。

我想要做的是在右上angular显示一个(x)button(不pipe是在使用什么样的屏幕旋转)并且在浏览器中执行后台操作。

我知道这个问题不是代码问题,因为我很好的sortingSwift代码的一部分。 我只是不能为我的生活工作如何以编程方式添加button,并显示在Web视图。

我能find的唯一教程包括创build一个工具栏来执行这些types的操作,我认为在查看图像时会占用很多空间。

问题很简单:

  • 这可能吗?
  • 如果是的话,我将如何去创buildbutton?

我将使用正则expression式来检查request.path参数,以便只在图像URL匹配时才显示。

道歉,如果这不适合SO。 我很高兴移动该问题或发布在另一个网站上。

提前感谢您的帮助。 我不是一个使用XCode的移动开发人员,故事板的东西是一个远离vim的世界。

参考:

1)CGRectMake: https : //developer.apple.com/library/ios/documentation/GraphicsImaging/Reference/CGGeometry/#//apple_ref/c/func/CGRectMake

2)UIWebViewDelegate: https : //developer.apple.com/library/ios/documentation/UIKit/Reference/UIWebViewDelegate_Protocol/#//apple_ref/occ/intfm/UIWebViewDelegate/webView :shouldStartLoadWithRequest: navigationType :


解:

1)创build“X”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,并显示“X”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)最后,你将需要创build一个方法,当“X”UIButton被点击时closures页面:

 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) } } 

注意:

在行中:

 let image = UIImage(named: "cross.png") as UIImage? button.setImage(image, forState: .Normal) 

我们将UIButton设置为十字形象。 您需要将十字图像添加到XCode项目,并将“cross.png”string设置为图像的确切名称:“nameOfImage.fileType”。