Lập trình ios: Sử dụng webview và tạo loading icon trong Switf 4 5 tháng 3 tuần trước #4136

  • tanphatdaklak
  • tanphatdaklak's Avatar
  • Offline
  • Premium Member
  • Tổng số bài viết: 83
  • Điểm khen ngợi: 0
Trong rất nhiêu control, việc sử dụng WebView cũng rất hữu ích. Mặc dù với bản ios mới, đã có control webkit như một browser thực sự, nhưng lại chỉ tương thích với các phiên bản trên 11, bởi vậy webview vẫn rất hữu dụng. Để sử dụng được webview:
Bước 1:
Kéo thả 1 control webview bằng cách mở thư viện bằng tổ hợp phím cmd + Shift + L
Bước 2: Khai báo biến webview bằng cách kéo thả vào màn hình
Bước 3: Sử dụng code như sau:
class TkbSinhvienController: UIViewController, UIWebViewDelegate {

    @IBOutlet weak var webview: UIWebView!
    @IBOutlet weak var txtMssv: UITextField!
    override func viewDidLoad() {
        super.viewDidLoad()
        webview.delegate = self
    }
    
    @IBAction func TimTKB(_ sender: UIButton) {
        let text: String = txtMssv.text!
       let request = URLRequest(url: URL(string: "https://cuoituan.vn/blog/cuoituancoffee/testios2.php?msv=" + text)!)
        webview.loadRequest(request as URLRequest);
        self.view.endEditing(true);
    }
   
    func webViewDidFinishLoad(_ webView : UIWebView) {
         print("****load xong")
       
    }
Ở đây để bắt sự kiện sau khi load xong, ta có thể dùng phương thức webViewDidFinishLoad.

Một suy nghĩ đặt ra, trong khi load, ta muốn màn hình hiển thị loading thì phải làm sao, xem code dưới đây tham khảo nhé:
class TkbSinhvienController: UIViewController, UIWebViewDelegate {

    @IBOutlet weak var webview: UIWebView!
   
    @IBOutlet weak var txtMssv: UITextField!
    
    override func viewDidLoad() {
        super.viewDidLoad()

      
        
        webview.delegate = self
    }
    
    @IBAction func TimTKB(_ sender: UIButton) {
       
        let text: String = txtMssv.text!
       let request = URLRequest(url: URL(string: "https://cuoituan.vn/blog/cuoituancoffee/testios2.php?msv=" + text)!)
        
     //   let url = NSURL (string: "https://www.simplifiedios.net");
    //    let request = NSURLRequest(url: url! as URL);
        webview.loadRequest(request as URLRequest);
        self.showSpinner(onView: self.view)
        self.view.endEditing(true);
    }
   
    func webViewDidFinishLoad(_ webView : UIWebView) {
         print("****load xong")
        self.removeSpinner()
    }
    /*
    // MARK: - Navigation

    // In a storyboard-based application, you will often want to do a little preparation before navigation
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        // Get the new view controller using segue.destination.
        // Pass the selected object to the new view controller.
    }
    */

}
var vSpinner : UIView?
extension UIViewController {
    
    func showSpinner(onView : UIView) {
        let spinnerView = UIView.init(frame: onView.bounds)
        spinnerView.backgroundColor = UIColor.init(red: 0.5, green: 0.5, blue: 0.5, alpha: 0.5)
        let ai = UIActivityIndicatorView.init(style: .whiteLarge)
        ai.startAnimating()
        ai.center = spinnerView.center
        
        DispatchQueue.main.async {
            spinnerView.addSubview(ai)
            onView.addSubview(spinnerView)
        }
        
        vSpinner = spinnerView
    }
    
    func removeSpinner() {
        DispatchQueue.main.async {
            vSpinner?.removeFromSuperview()
            vSpinner = nil
        }
    }
    func hideKeyboardWhenTappedAround() {
        let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(UIViewController.dismissKeyboard))
        tap.cancelsTouchesInView = false
        view.addGestureRecognizer(tap)
    }
    
    @objc func dismissKeyboard() {
        view.endEditing(true)
    }
Vi tính Tấn Phát -02/13 Y wang , BMT , Đắk Lắk
0500.3.579.078 -0949.579.078 - www.tanphat.net
Không cho phép Khách viếng thăm viết bài.

quang cao daklak

Bài đăng mới nhất

  • Không có bài viết được hiển thị.