Ответ 1
Swift 3
Я сделал цифровую панель, которую я хотел использовать таким образом, поэтому на viewpadController с числовой панелью вам нужно установить эти значения
override func viewDidLoad()
{
super.viewDidLoad()
self.preferredContentSize = CGSize(width:340, height:385) // IMPORTANT
// REST ARE COSMETIC CHANGES
self.view.backgroundColor = UIColor.clear
self.view.isOpaque = true
self.view.layer.masksToBounds = false
self.view.layer.shadowOffset = CGSize(width: 0, height: 5)
self.view.layer.shadowColor = UIColor(red:0, green:0, blue:0, alpha:1).cgColor
self.view.layer.shadowOpacity = 0.5
self.view.layer.shadowRadius = 20
}
и на viewController я показываю его:
func showNumpad(view: UIView)
{
let controller: UIViewController? = numberpadVC()
// present the controller
// on iPad, this will be a Popover
// on iPhone, this will be an action sheet
controller?.modalPresentationStyle = .popover
self.present(controller!, animated: true, completion: { _ in })
// configure the Popover presentation controller
let popController: UIPopoverPresentationController? = controller?.popoverPresentationController
popController?.permittedArrowDirections = .any
//popController?.barButtonItem = textField.inputView
popController?.sourceView = view
popController?.delegate = self
popController?.sourceRect = (controller?.view.frame)! //CGRect(x: 0, y:0, width:340, height:384)
}
отображение цифровой клавиатуры:
func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool
{
//self.scrollview.addSubview(self.numpad)
UIView.animate(withDuration: 0.25)
{
//self.numpad.frame.origin.x = self.viewNum1.frame.origin.x - 330
if textField == self.txtNum1
{
self.showNumpad(view: textField)
}
}
}