2016-05-13 5 views
2

私は、iOS用のUIWebViewを使用している問題を探して解決しようとしています。UIWebViewの上にUIButton(閉じる)ボタンをオーバーレイする方法は?

私は、ソースコードがhttps://github.com/pjuu/iotterにある私のウェブサイトをロードする非常に小さなアプリケーションを持っています。

投稿された画像をクリックすると、画像URLがウェブビューに読み込まれます。これにより、彼らは孤立し、サイトの他の部分に戻ることができなくなります。

私がしたいことは、(画面の回転が何であるかに関係なく)右上隅に(x)ボタンを表示し、ブラウザでバック操作を実行することです。

私はこの問題をコードの問題ではないと知っています。私は、私の人生のためにボタンをプログラム的に追加する方法と、それをwebview上に表示させる方法があります。

唯一のチュートリアルは、画像を見るときに多くのスペースを占めると思われるこの種のアクションを実行するツールバーを作成することでした。

の質問は非常に簡単です:

  • これは可能ですか?
  • ボタンを作成するにはどうすればいいですか?

正規表現でrequest.pathパラメータをチェックして、イメージURLと一致する場合にのみ表示するようにします。

これがSOには十分対応していないとお詫び申し上げます。質問や投稿を別のサイトに移動させていただきます。

ありがとうございました。私はモバイルデベロッパーではないので、Xcodeとストーリーボードを使用することは、私のためにvimから離れた世界です。

+0

'UIWebView'はサブビューを管理できる' UIView'です。 'UIButton'は' UIView'です。あなたは 'UIWebView'に' UIButton'を追加して通常どおりに管理できます。私はあなたがXCode envに移動しなければならないと思う、人生はより簡単になるだろう... –

+0

@ Jean-BaptisteYunès私は混乱の多くがどこから来ているXCodeを使用しています。説明ありがとう。 –

答えて

6

REFERENCE:

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) "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)は、 "X" UIButtonをIMAGEURLが開かれたときに検出し、作りが表示されます。

// 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)最後に、あなたを

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) 
    } 
} 
:「X」UIButtonがタップされているページを閉じメソッドを作成する必要があります。

N.B .:株における

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

我々は、クロスの画像であるとUIButtonを設定しています。 クロスイメージをXCodeプロジェクトに追加し、 "cross.png"文字列をイメージの正確な名前 "nameOfImage.fileType"に設定する必要があります。

+0

答えてくれてありがとう、開発者のリンクは本当に便利です。 UIButtonを作成して制約を設定する方法を見ていきます。少なくとも私はこれが可能であることを知っています。 –

+0

@JoeDohertyあなたは歓迎です:D私はいくつかのコードスニペットで私の答えを編集していますので、プログラムで制約を追加する方法を見ることができます; – Coder1000

+0

WOW!大変ありがとうございます。私はこの最後の夜を試して正しい行にあったが、これを持っていないだろう。これはうまくいくように見えます。私は家に帰るときにあなたの答えを受け入れ、それが大丈夫ならばこれをテストすることができます。これは将来的には役に立つかもしれないと思う:) –

関連する問題