1

SFSafariViewControllerCookieが機能する必要があるため、Webページを表示するために使用しています。私はサファリ検索バーが欲しくないので、それを隠すためのオーバーレイといくつかのタスクを実行するためのいくつかのボタンがあります。ただし、完了ボタンの機能が必要です。オーバーレイがあるため、完了ボタンが非表示になり、機能しないため、以下のコードを試しました。しかし、これもうまくいきません -

self.presentViewController(sfController, animated: true) {
        let bounds = UIScreen.mainScreen().bounds

        // It can be any overlay. May be your logo image here inside an imageView.
        let overlay = UIView(frame: CGRect(x: 0, y: 0, width: bounds.size.width, height: 65))
        let completedBtn = UIButton()
        let favBtn = UIButton()
        let homeBtn = UIButton()

        homeBtn.setTitle("Home",forState: .Normal)
        homeBtn.setTitleColor(UIColor.whiteColor(), forState: .Normal)
        homeBtn.frame = CGRectMake(20, 25, 200, 35)
        homeBtn.backgroundColor = UIColor(netHex: 0x6F9824)
        homeBtn.addTarget(self, action: #selector(DetailsViewController.HomeBtnAction), forControlEvents: UIControlEvents.TouchUpInside)

        completedBtn.setTitle("Completed",forState: .Normal)
        completedBtn.setTitleColor(UIColor.whiteColor(), forState: .Normal)
        completedBtn.frame = CGRectMake((bounds.size.width - 210), 25, 200, 35)
        completedBtn.backgroundColor = UIColor(netHex: 0x6F9824)
        completedBtn.addTarget(self, action: #selector(DetailsViewController.CompletedAction), forControlEvents: UIControlEvents.TouchUpInside)

        favBtn.setTitle("Favourite", forState: .Normal)
        favBtn.setTitleColor(UIColor.whiteColor(), forState: .Normal)
        favBtn.frame = CGRectMake((bounds.size.width - 420), 25, 200, 35)
        favBtn.backgroundColor = UIColor(netHex: 0x6F9824)
        favBtn.addTarget(self, action: #selector(DetailsViewController.FavouriteAction), forControlEvents: UIControlEvents.TouchUpInside)

        overlay.backgroundColor = UIColor(netHex: 0x435C16)

        overlay.addSubview(favBtn)
        overlay.addSubview(completedBtn)
        overlay.addSubview(homeBtn)
        sfController.view.addSubview(overlay)
}

On click of Home button i have this code - 
func HomeBtnAction(){
        let app = "MyApp://"
        let appUrl = NSURL(string: app)
        if UIApplication.sharedApplication().canOpenURL(appUrl!)
        {
            UIApplication.sharedApplication().openURL(appUrl!)

        }
    }

そして、私のplistは次のようになります-

<key>LSApplicationQueriesSchemes</key>
    <array>
        <string>MyApp</string>
    </array>
    <key>CFBundleURLTypes</key>
    <array>
        <dict>
            <key>CFBundleURLName</key>
            <string>Test.com.MyApp</string>
            <key>CFBundleURLSchemes</key>
            <array>
                <string>MyApp</string>
            </array>
        </dict>
    </array>

しかし、ホームボタンをクリックしても何も起こりません。エラーや警告メッセージは表示されません。また、ホームボタンをクリックすると、現在のコードがアプリを再度開くように警告することも知っていますが、それも望んでいません。sfsafariviewcontroller の「完了」ボタンとまったく同じ機能が必要です。それを機能させて、オーバーレイも使用できますか?

前もって感謝します!そして、どんな提案も大歓迎です。

4

1 に答える 1

1

presentViewcontroller の終了関数を呼び出してみませんか。このソース コードをテストするために、Swift 3 を使用しました。それは私にとって適切に機能しており、アプリケーションに戻ることができます。

func HomeBtnAction(){
        print("Button Pressed")
        self.dismiss(animated: true, completion: nil)
    }

于 2016-09-30T16:05:56.223 に答える