2017-04-25 11 views
0

最初は、これは欺瞞ではありません私は無回答の類似の質問にここで多くの答えを試してみました。removeFromSuperview()ブロックUIView入力

hideButtonを押してremoveFromSuperview()を実行すると、theOneViewが削除されます。menuButtonを押すと、theOneViewは再作成されますが、入力は受け入れられません。誰でも助けてくれますか?

theOneViewは私のviewcontrollerのビューです。ドキュメントから

import UIKit 
import WebKit 

class ViewController: UIViewController, WKNavigationDelegate { 
    @IBOutlet var MyView: UIView! 

    @IBAction func showButton(_ sender: Any) { 
     print ("Show") 
     if (MyView != nil){ 
      MyView.removeFromSuperview() 
     } 
     let webView = WKWebView(frame: MyView.frame) 
     let inputURL = URL(string: "https://google.com") 
     webView.load(URLRequest(url: inputURL!)) 
     MyView.addSubview(webView) 
     self.view.addSubview(MyView) 
     //theOneView.bringSubview(toFront: webView) 
     //self.view.bringSubview(toFront: theOneView) 
    } 

    @IBAction func hideButton(_ sender: Any) { 
     print ("Hide") 
     MyView.removeFromSuperview() 
    } 
} 
+0

コメントが多いコードがあります。あなたの質問から不必要なコードを削除し、あなたの問題に関連するコードのみを投稿してください。 – rmaddy

+0

アップロードされたクリーナーコード。 –

答えて

2

FUNCのremoveFromSuperview()

は、スーパーその窓からの景色のリンクを解除し、レスポンダチェーンから を除去します。ビューのスーパービューがnilでない場合、 スーパービューはビューを解放します。このメソッドを呼び出すと、削除するビューを参照する の制約、または削除するビューのサブツリーのいずれかのビューが参照される が削除されます。

代わりに、ビューのhiddenプロパティを使用する必要があります。

+0

問題は、ボタンの押下時にMyViewサブビューをリロードしようとしていることです。MyViewを別のURLで再作成できます。私がこれを行うために見つけた唯一の簡単な方法は、サブビューを破壊してリメイクすることです。 removeFromSuperViewの後にビューを正しくリンクする方法はありますか? –

+0

私はあなたがwebviewを表示するためにサブビューを使うべきではないと思います。 [this](https://developer.apple.com/reference/webkit/wkwebview)のようなコードを変更してみてください。その後、新しいURLでwebviewをリロードするだけです。 – dilaver

+0

試してもうまくいかない - http://stackoverflow.com/questions/43592297/how-to-change-urls-using-only-one-wkwebview –

関連する問題