1

私はqrコードからスキャンされたURLを開こうとしています。私はqrコードスキャナを作ったが、スキャンされたqrコードの値だけをペーストボードにコピーする。私はそれをSFSafariViewControllerで開くようにしようとしています。 "Copy"オプションの代わりに を "Open"にして、実際にスキャンしたURLを開きたいとします。SFSafariViewControllerのQRコードからスキャンしたURLを開く

はここ

func captureOutput(_ captureOutput: AVCaptureOutput!, didOutputMetadataObjects metadataObjects: [Any]!, from connection: AVCaptureConnection!) { 
    if metadataObjects != nil && metadataObjects.count != 0 
    { 
     if let object = metadataObjects[0] as? AVMetadataMachineReadableCodeObject 
     { 
      if object.type == AVMetadataObjectTypeQRCode 
      { 
       let alert = UIAlertController(title: "QR Code", message: object.stringValue, preferredStyle: .alert) 
       alert.addAction(UIAlertAction(title: "Retake", style: .default, handler: nil)) 
       alert.addAction(UIAlertAction(title: "Copy", style: .default, handler: { (nil) in 
        UIPasteboard.general.string = object.stringValue 

       })) 
       present(alert, animated: true, completion: nil) 

      } 
     } 
    } 

} 

答えて

0

あなたのコードはSFSafariViewControllerを使用しようとするの兆候を示していない私のコードです。あなたは以下のようなものを試しましたか?

import SafariServices 

if let url = URL(string: object.stringValue) { 
    let browser = SFSafariViewController(url: url) 
} 

これはまだあなたがユーザーなどに提示するために自分自身を行う必要があるいくつかの仕事があるだろう、それは魔法のように表示されことはありません。safariviewControllerを使用して

presentViewController(browser, animated: true, completion: nil) 
1

は非常に簡単です

最初にsafariservicesをインポートしてから、safilicontrollerにURLを提示する必要があります

import SafariServices 

func loadSafari(url : String){ 
    guard let url = URL(string: url) else { return } 

    let safariController = SFSafariViewController(url: url) 
    present(safariController, animated: true, completion: nil) 
} 

場所あなたのクラスでこのコードとsafariControllerを却下し、ユーザーが戻って、以前のViewControllerにナビゲートする必要があります行わ上

func captureOutput(_ captureOutput: AVCaptureOutput!, didOutputMetadataObjects metadataObjects: [Any]!, from connection: AVCaptureConnection!) { 
if metadataObjects != nil && metadataObjects.count != 0 
{ 
    if let object = metadataObjects[0] as? AVMetadataMachineReadableCodeObject 
    { 
     if object.type == AVMetadataObjectTypeQRCode 
     { 

       UIPasteboard.general.string = object.stringValue 
       loadSafari(url: object.stringValue) 

      })) 
      present(alert, animated: true, completion: nil) 

     } 
    } 
} 

} 

クリックキャプチャ出力内の関数を呼び出します。

こちらがお役に立てば幸いです。それがどうなるか教えてください。

+0

それがうまくいった!ありがとうございました! 私は "Retake"ボタンを残し、 "Copy"を "Open"に変更してからloadSafari関数を呼び出しました。 もう一度おねがいします! – Ibrahim

+0

@Ibrahimのお手伝いをしてうれしいです。 :) –

関連する問題