2017-02-21 6 views
0

Ich versuche, eine benutzerdefinierte Ansicht mit PKHUD zu erstellen, so dass bei API-Aufrufen kann ich eine Nachricht an unsere Benutzer zusammen mit einer Schaltfläche anzeigen, um Hilfe aufzurufen.Erstellen einer benutzerdefinierten Ansicht mit PKHUD in swift 3

Hier ist meine Klassendatei:

import UIKit 
import PKHUD 

class PKHUDHelpDeskView: PKHUDWideBaseView { 

    private func callNumber(phoneNumber:String) { 
     if let phoneCallURL = URL(string: "tel:\(phoneNumber)") { 
      let application:UIApplication = UIApplication.shared 
      if (application.canOpenURL(phoneCallURL)) { 
       if #available(iOS 10.0, *) { 
        application.open(phoneCallURL, options: [:], completionHandler: nil) 
       } else { 
        // Fallback on earlier versions 
       } 
      } 
     } 
    } 

    @IBAction func helpDeskNumberButton(_ sender: Any) { 
     callNumber(phoneNumber: "8005551234") 
    } 
} 

Hier ist, wie ich es nenne:

PKHUD.sharedHUD.contentView = PKHUDHelpDeskView() 
PKHUD.sharedHUD.show() 
PKHUD.sharedHUD.hide(afterDelay: 4.0) 

Ich habe einen Blick in Storyboard eingerichtet (mit der Klasse PKHUDHelpDeskView gesetzt) ​​mit der Schaltfläche und das Textfeld, in dem die Nachricht angezeigt wird. Wenn ich dies ausführe, wird das PKHUD ohne Text angezeigt. Die Klassendatei und das Storyboard sind ordnungsgemäß verbunden. Was muss also getan werden, damit der Text in PKHUD angezeigt wird?

Antwort

1

Ich habe versucht, das gleiche zu tun. Anstatt UILabel und UIButton mithilfe von Storyboard hinzuzufügen (ich glaube, Sie beziehen sich hier auf .xib), habe ich sie programmatisch hinzugefügt. Das Folgende ist mein endgültiger Code. Bitte probieren Sie es aus

import PKHUD 

class PKHUDHelpDeskView: PKHUDWideBaseView { 

    let button: UIButton = UIButton(type: UIButtonType.custom) 
    let label: UILabel = UILabel() 

    override func didMoveToSuperview() { 
     super.didMoveToSuperview() 

     button.setTitle("Call", for: UIControlState.normal) 
     button.backgroundColor = UIColor.red 
     button.addTarget(self, action: #selector(self.helpDeskNumberButton(_:)), for: UIControlEvents.touchUpInside) 

     label.text = "Call me now" 
     label.textColor = UIColor.brown 
     label.font = UIFont.systemFont(ofSize: 16) 
     label.textAlignment = NSTextAlignment.center 

     self.addSubview(label) 
     self.addSubview(button) 
    } 

    override func layoutSubviews() { 
     super.layoutSubviews() 

     self.button.frame = CGRect(x: 0, y: 0, width: self.frame.size.width/2, height: 30.0) 
     self.label.frame = CGRect(x: 0, y: 30.0, width: self.frame.size.width, height: 40.0) 
    } 

    private func callNumber(phoneNumber:String) { 
     if let phoneCallURL = URL(string: "tel:\(phoneNumber)") { 
      let application:UIApplication = UIApplication.shared 
      if (application.canOpenURL(phoneCallURL)) { 
       if #available(iOS 10.0, *) { 
        application.open(phoneCallURL, options: [:], completionHandler: nil) 
       } else { 
        // Fallback on earlier versions 
       } 
      } 
     } 
    } 

    func helpDeskNumberButton(_ sender: Any) { 
     callNumber(phoneNumber: "8005551234") 
    } 
} 
+0

Vielen Dank! Ich bin mir nicht sicher, warum es programmatisch funktioniert und nicht in Storyboards, aber das ist in Ordnung für mich. Ich habe den Text und den Knopf formatiert und schau genau, wie ich es brauche, aber der Knopf funktioniert nicht. Es gibt eine Sicht auf alles, was mich daran hindert, den Knopf drücken zu können. [Hier gesehen ...] (http://imgur.com/A4eF9ZA). Irgendwelche Ideen? – Anonymoose

Verwandte Themen