如何在Swift 2.0中使用完成button做数字键盘?

我已经用完成button尝试了很多数字键盘,但在SWIFT 2.0中找不到正确的答案。

您可以使用工具栏在键盘上添加完成button

override func viewDidLoad() { super.viewDidLoad() let tooBar: UIToolbar = UIToolbar() tooBar.barStyle = UIBarStyle.BlackTranslucent tooBar.items=[ UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.FlexibleSpace, target: self, action: nil), UIBarButtonItem(title: "Done", style: UIBarButtonItemStyle.Done, target: self, action: "donePressed")] tooBar.sizeToFit() yourTextFeild.inputAccessoryView = tooBar } func donePressed () { yourTextFeild.resignFirstResponder() } 

它会看起来像这样

在这里输入图像说明

没有工具栏,我会通过以下步骤在Return键中添加完成button,

创build一个自定义的返回button如下

 let mobilePadNextButton = UIButton(type: UIButtonType.custom) 

在viewdidload中,devise它。 在这里,我正在deviseNextbutton,因为我需要Next而不是完成。

 mobilePadNextButton.setTitle("Next", for: UIControlState())//Set Done here mobilePadNextButton.setTitleColor(UIColor.black, for: UIControlState()) mobilePadNextButton.frame = CGRect(x: 0, y: 163, width: 106, height: 53) mobilePadNextButton.adjustsImageWhenHighlighted = false mobilePadNextButton.addTarget(self, action: #selector(self.mobilePadNextAction(_:)), for: UIControlEvents.touchUpInside) 

添加Keyboad通知

 func textFieldDidBeginEditing(_ textField: UITextField) { NotificationCenter.default.addObserver(self, selector: #selector(ViewController.keyboardWillShow(_:)), name: NSNotification.Name.UIKeyboardWillShow, object: nil) } func keyboardWillShow(notification:NSNotification){ if mobileNoTxtFld.isFirstResponder { DispatchQueue.main.async { () -> Void in self.mobilePadNextButton.isHidden = false let keyBoardWindow = UIApplication.shared.windows.last self.mobilePadNextButton.frame = CGRect(x: 0, y: (keyBoardWindow?.frame.size.height)!-53, width: 106, height: 53) keyBoardWindow?.addSubview(self.mobilePadNextButton) keyBoardWindow?.bringSubview(toFront: self.mobilePadNextButton) UIView.animate(withDuration: (((notification.userInfo! as NSDictionary).object(forKey: UIKeyboardAnimationCurveUserInfoKey) as AnyObject).doubleValue)!, delay: 0, options: UIViewAnimationOptions.curveEaseIn, animations: { () -> Void in self.view.frame = self.view.frame.offsetBy(dx: 0, dy: 0) }, completion: { (complete) -> Void in print("Complete") }) } } else { self.mobilePadNextButton.isHidden = true } } 

在这里,你可以做完成的行动

 func mobilePadNextAction(_ sender : UIButton){ self.respondNextTexField(textField: mobileNoTxtFld) } 

UI将如下所示,

在这里输入图像说明

我参考了这个Git代码