Принятие UITextInputTraits в Swift

Я пытаюсь принять UITextInputTraits для обычая UIButton подкласс в Swift 3.

Я добавил все свойства, указанные в разделе "Символы" документации:

import UIKit 

class TextInputButton: UIButton {
    var autocapitalizationType: UITextAutocapitalizationType = .none
    var autocorrectionType: UITextAutocorrectionType         = .no
    var spellCheckingType: UITextSpellCheckingType           = .no
    var enablesReturnKeyAutomatically: Bool                  = false
    var keyboardAppearance: UIKeyboardAppearance             = .default
    var keyboardType: UIKeyboardType                         = .default
    var returnKeyType: UIReturnKeyType                       = .default
    var isSecureTextEntry: Bool                              = false

    // (...rest of class implementation omitted...)

Тем не менее, когда я пытаюсь скомпилировать, isSecureTextEntry вызывает следующую ошибку:

Метод Objective C 'setIsSecureTextEntry:', предоставленный сеттером для 'isSecureTextEntry', не соответствует селектору требования ('setSecureTextEntry:')

Если я использую предложенное исправление, объявление свойства превращается в:

var @objc(setSecureTextEntry:) isSecureTextEntry: Bool = false

... но теперь я получаю три ошибки:

  1. Ожидаемый образец

  2. Последовательные объявления в строке должны быть разделены знаком ';'

(хочет, чтобы я вставил точку с запятой между var а также @objc),

а также:

  1. Ожидаемая декларация

Как правильно реализовать это свойство?

1 ответ

Решение

Может быть, не совсем ваш случай, но такое принятие UITextInputTraits работало хорошо для меня

(второстепенный совет: UIKeyInput расширяет UITextInputTraits)

public class ShortPasswordEntry : UIControl, UIKeyInput
{
    public override init(frame: CGRect) {
        super.init(frame: frame)
    }

    extension ShortPasswordEntry
    {
        public var keyboardType: UIKeyboardType {
            get {
                return .numberPad
            }
            set {
                assertionFailure()
            }
        }
    }
}
Другие вопросы по тегам