如何在 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 游戏:跨多个场景的按钮和节点