【问题标题】:How to do number keypad with done button in Swift 2.0?如何在 Swift 2.0 中使用完成按钮做数字键盘?
【发布时间】:2017-01-10 05:46:35
【问题描述】:

我尝试了很多带有完成按钮的数字键盘,但在 SWIFT 2.0 中都没有找到正确的答案。

【问题讨论】:

    标签: ios swift2 keyboard


    【解决方案1】:

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

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

    看起来像这样

    【讨论】:

      【解决方案2】:

      如果没有工具栏,我会通过以下步骤在 Return 键位置本身添加完成按钮,

      如下创建一个自定义返回按钮

      let mobilePadNextButton = UIButton(type: UIButtonType.custom)
      

      在 viewdidload 中,设计它。在这里,我正在设计 Next 按钮,因为我需要 Next 而不是 Done。

      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)
      

      添加键盘通知

      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){
      
          //Click action
      
      }
      

      用户界面如下所示,

      我提到了这个Git Code

      【讨论】:

        猜你喜欢
        • 2023-03-15
        • 1970-01-01
        • 2010-10-09
        • 2018-02-04
        • 1970-01-01
        • 1970-01-01
        • 2013-12-10
        • 1970-01-01
        • 2015-01-03
        相关资源
        最近更新 更多