2017-02-21 4 views
0

Я пытаюсь создать пользовательский вид с использованием PKHUD, так что, когда API-вызовы завершатся неудачно, я могу отобразить сообщение для наших пользователей вместе с кнопкой для вызова справки.Создание пользовательского представления с помощью PKHUD в swift 3

Вот мой класс файла:

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") 
    } 
} 

Вот как я называю это:

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

У меня есть мнение, установленный в раскадровке (с установкой класса PKHUDHelpDeskView) с и текстовое поле, отображающее сообщение. Когда я запускаю это, PKHUD отображает текст без него. Файл класса и раскадровка подключены правильно, поэтому что нужно сделать, чтобы текст отображался в PKHUD?

ответ

1

Я пробовал делать то же самое. Вместо добавления UILabel и UIButton с помощью раскадровки (я полагаю, вы здесь ссылаетесь на .xib), я добавил их программно. Следующий мой окончательный код. Попробуйте его

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

Спасибо! Я не уверен, почему он работает программно, а не в раскадровки, но со мной все в порядке. У меня текст и кнопка отформатированы и выглядят точно, как мне это нужно, но кнопка не работает. Существует точка зрения на все, что блокирует меня от возможности нажимать кнопку. [Видел здесь ...] (http://imgur.com/A4eF9ZA). Есть идеи? – Anonymoose

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