2016-10-20 3 views
0

У меня есть веб-представление с веб-страницей со ссылками внизу. У меня есть способ разобраться с ними, но все, что он делает, открывает их в новый браузер Safari. Это не то, что я хочу. Я хотел бы, чтобы они оставались внутри веб-представления и позволяли мне легко перемещаться по ним. Есть ли способ сделать это?Как загрузить ссылку URL-адреса, находящуюся внутри веб-представления, и сохранить ее в этом веб-представлении в SWIFT

Я пробовал просто использовать обычный веб-просмотр, но тогда ссылки внизу не будут работать.

Вот то, что я до сих пор:

class ViewController: UIViewController, UIWebViewDelegate { 


@IBOutlet weak var myWebview: UIWebView! 
@IBOutlet weak var returnButton: UIButton! 

override func viewDidLoad() { 
    super.viewDidLoad() 

    prettyReturnButton(returnButton) 

    let url = NSURL(string: "mywebpage") 

    myWebview.delegate = self 

    print("Web page:" , url) 
    let requestObj = NSURLRequest(URL: url!); 
    myWebview.loadRequest(requestObj); 
    myWebview.keyboardDisplayRequiresUserAction = true 



} 

func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool { 
    switch navigationType { 
    case .LinkClicked: 
     // Open links in Safari 
     //let newRequestObj = NSURLRequest(URL: request.URL!) 
     // webView.loadRequest(newRequestObj) 
     UIApplication.sharedApplication().openURL(request.URL!) 
     return false 
    default: 
     // Handle other navigation types... 
     return true 
    } 
} 
+1

предполагалось перейти к ссылкам в пределах одной и той же WebView, если вы не используете делегат – xmhafiz

+0

Если вы не хотите, чтобы ссылки открываются в Safari, то почему вы перехватывать ссылки и открыть их в Сафари? – rmaddy

ответ

2

В Webview делегатом вы будете хотеть, чтобы перейти на новый URL, используя тот же WebView.

Для вас это означает, что внутри вашего коммутатора случае вы должны использовать loadRequest

loadRequest documentation

Чтобы устранить проблему, вы должны удалить строку с помощью UIApplication.sharedApplication().openURL(request.URL!)

и заменить его вызовом loadRequest

func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool { 
    switch navigationType { 

    case .LinkClicked: 
     // Open links in Safari 

     guard let newRequest = request as? URLRequest else { return false } 

     webView.loadRequest(newRequest) 
     return false 
    default: 
     // Handle other navigation types... 
     return true 
    } 
} 

Ho Это помогает! Хорошего дня!

3

Дайте делегатов на свой UIViewController: UIWebViewDelegate

let url = NSURL(string: "http://www.djmazacool.com") 
let req = NSURLRequest(URL: url!) 
YOURWEBVIEW.delegate = self 
YOURWEBVIEW.loadRequest(req) 



func webViewDidStartLoad(webView: UIWebView) 
{ 
     // start animation 
     print("start loaded call") 
} 
func webViewDidFinishLoad(webView: UIWebView) 
{ 
     // load url complete 
     print("loading done call") 
} 

Выход:

Its my webView Output load url

Не забыл добавить этот атрибут в .plist файле.

<key>NSAppTransportSecurity</key> 
<dict> 
    <key>NSAllowsArbitraryLoads</key> 
    <true/> 
</dict> 

.plist file code

 Смежные вопросы

  • Нет связанных вопросов^_^