【问题标题】:Adding a minus sign to the UITextField's .NumberPad keyboard向 UITextField 的 .NumberPad 键盘添加减号
【发布时间】:2016-07-27 02:15:14
【问题描述】:

对于 iOS 开发来说还算新手,所以请原谅我问了一些可能很明显的问题。众所周知,UITextField 的keyboardType 设置为.NumberPad 的键盘如下所示...

.NumberPad keyboard

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

非常感谢您的帮助。

【问题讨论】:

  • 理论上你可以关注this,但这样做并不“安全”。您可能想尝试自定义键盘,或在附件视图中添加一个额外的按钮。

标签: ios swift uitextfield custom-keyboard


【解决方案1】:

在您的文本字段 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

    }
}

希望对你有帮助。

【讨论】:

  • 如何让它在文本中实际插入减号按钮?
  • 您在 toggleMinus 函数中执行此操作。这种按钮的使用似乎是解决此问题的常见解决方法。但是如果用户在辅助功能中打开了按钮形状,这些按钮将显示有下划线。键盘的其余部分没有。所以我认为这不是一个好的解决方案。
【解决方案2】:

Swift 5.2

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-21
    • 2021-09-04
    • 1970-01-01
    • 2011-08-22
    • 2015-12-15
    相关资源
    最近更新 更多