Принятие 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
... но теперь я получаю три ошибки:
Ожидаемый образец
Последовательные объявления в строке должны быть разделены знаком ';'
(хочет, чтобы я вставил точку с запятой между var
а также @objc
),
а также:
- Ожидаемая декларация
Как правильно реализовать это свойство?
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()
}
}
}
}