Опитвайки се да напишете главна първата буква на всяка дума в текстово поле с помощта на Swift

Опитвам се да напиша с главна първа буква всяка дума, която поставям в текстово поле. Бих искал да поставя този код тук:

func textFieldShouldReturn(textField: UITextField) -> Bool {
//Here
}

Проблемът ми е, че нямам идея какво да сложа. Опитах се да създам низ, както ми каза една публикация, и имам проблем:

nameOfString.replaceRange(nameOfString.startIndex...nameOfString.startIndex, with: String(nameOfString[nameOfString.startIndex]).capitalizedString)

Не съм сигурен какво да поставя вътре в тази функция, за да изписвам с главна първа буква на всяка дума.


person Andy Lebowitz    schedule 01.01.2016    source източник
comment
Защо не зададете свойството autocapitalizationType на текстовото поле на Words? След това, докато потребителят въвежда, всяка дума автоматично ще бъде написана с главни букви.   -  person rmaddy    schedule 01.01.2016
comment
@rmaddy защо не публикуваш коментара си като отговор? textField.autocapitalizationType = .Words   -  person Leo Dabus    schedule 01.01.2016
comment
@LeoDabus Защото коментарът ми не отговаря на въпроса. Това е просто бърз коментар, който предлага възможно алтернативно решение. Не знам дали OP всъщност има различна нужда.   -  person rmaddy    schedule 01.01.2016
comment
опитайте да добавите цел към вашето текстово поле за промененото редактиране на контролни събития, което извиква метод, където можете просто да направите нещо като textField.text = textField.text?.capitalizedString   -  person Leo Dabus    schedule 01.01.2016


Отговори (3)


Просто задайте главни букви на Textfield за думите.

въведете описание на изображението тук

person technerd    schedule 01.01.2016
comment
как да накарам UIButton етикет като Capitalize. - person N J; 10.10.2017
comment
Промяната на опцията за капитализация не работи за мен. :-( - person Mehul Solanki; 17.10.2017

От кодовата страна на този въпрос, ако приемем, че е свързан с IBOutlet.

  • Ако трябва да промените поведението на текстовото поле:

    textField.autocapitalizationType = .Words
    
  • Ако трябва да промените входа за текстовото поле, т.е. самия String:

    let newText = textField.text?.capitalizedString
    
  • Не е зададено във въпроса, но все пак: за главна само първата буква:

    let text = textField.text
    let newText = String(text.characters.first!).capitalizedString + String(text.characters.dropFirst())
    
person Idan    schedule 03.08.2016

Това е принудително главна буква на първата буква:

firstNameTextField.delegate = self

extension YourViewController : UITextFieldDelegate {

    func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
        let empty = textField.text?.isEmpty ?? true
        if(empty) {
            textField.text = string.uppercased()
            return false
        }

        return true
    }

}
person Makalele    schedule 14.03.2018