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

Posted

技术标签:

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

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

【问题讨论】:

【参考方案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

【讨论】:

以上是关于如何在 Swift 2.0 中使用完成按钮做数字键盘?的主要内容,如果未能解决你的问题,请参考以下文章

SpriteKit Swift 2.0 游戏:跨多个场景的按钮和节点

如何在iOS Swift 3中从键盘中删除更改语言键按钮

触摸另一个控件(如按钮)Swift 2.0时如何隐藏键盘

如何在 swift 2.0 中使用 catch 概念

FacebookSDK(4.7) 自定义登录 UI 按钮 - Swift 2.0

键盘完成键动作swift iOS不起作用