在UITextField的.NumberPad键盘上添加一个减号

时间:2016-04-06 15:08:20

标签: ios swift uitextfield custom-keyboard

iOS开发相当新,请原谅我提出可能非常明显的问题。众所周知,键盘类型设置为.NumberPad的UITextField键盘如下所示......

.NumberPad keyboard

我想做的是用减号替换左下角的空白区域。这是可能的,还是需要编写一个完整的自定义键盘来实现这一目标?

真的很感激帮助。

2 个答案:

答案 0 :(得分:8)

在文本字段inputAccessoryView中添加一个工具栏,当文本字段成为响应者时,键盘将显示工具栏(Swift 3.0):

func addToolBar(){
   let toolbar = UIToolbar(frame: CGRect(x: 0, y: 0, width: self.view.bounds.size.width, height: 44))
   let minusButton = UIBarButtonItem(title: "-", style: .plain, target: self, action: #selector(toggleMinus))
   toolbar.items = [minusButton]
   theTextField.inputAccessoryView = toolbar
}

func toggleMinus(){

    // Get text from text field
    if var text = theTextField.text , text.isEmpty == false{

        // Toggle
        if text.hasPrefix("-") {
            text = text.replacingOccurrences(of: "-", with: "")
        }
        else
        {
            text = "-\(text)"
        }

        // Set text in text field
        theTextField.text = text

    }
}
希望它有所帮助。

答案 1 :(得分:0)

Swift 5.2

如上所述设置UIToolbar,然后在extension上使用UITextField

import UIKit

extension UITextField {
    func toggleMinus() {
        guard let text = self.text, !text.isEmpty else { return }
        self.text = String(text.hasPrefix("-") ? text.dropFirst() : "-\(text)")
    }
}

用法:

@objc func toggleMinus() {
    yourTextField.toggleMinus()
}