Добавление знака минус к клавиатуре UITextField .NumberPad

Довольно новичок в разработке iOS, так что простите меня за вопрос, который может быть совершенно очевидным. Как вы все знаете, клавиатура UITextField с типом клавиатуры, установленным в .NumberPad, выглядит следующим образом...

.Клавиатура .NumberPad

Что я хотел бы сделать, так это заменить пустое место в левом нижнем углу знаком минус. Возможно ли это или для этого нужно написать целую пользовательскую клавиатуру?

Был бы очень признателен за помощь.


person Gerwazy Sokołowski    schedule 06.04.2016    source источник
comment
Теоретически вы можете следовать этому, но на самом деле это небезопасно. Вы можете попробовать собственную клавиатуру или добавить дополнительную кнопку в accessView.   -  person zcui93    schedule 06.04.2016


Ответы (2)


Добавьте панель инструментов в текстовое поле 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

    }
}

Надеюсь, поможет.

person Oleg Sherman    schedule 06.04.2016
comment
Как мне заставить его на самом деле вставить кнопку минус в текст? - person Amit Kalra; 21.08.2016
comment
Вы делаете это в функции toggleMinus. Такое использование кнопок кажется распространенным решением этой проблемы. Но если у пользователя включены формы кнопок в специальных возможностях, эти кнопки будут отображаться с подчеркиванием. Остальной клавиатуры нет. Поэтому я думаю, что это не очень хорошее решение. - person Victor Engel; 29.10.2017

Свифт 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()
}
person rbaldwin    schedule 25.04.2020