I am trying to adopt the UITextInputTraits
for a custom UIButton
subclass in Swift 3.
I added all the properties specified in the "Symbols" section of the documentation:
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...)
However, when I try to compile, isSecureTextEntry
causes the following error:
Objective-C method 'setIsSecureTextEntry:' provided by setter for 'isSecureTextEntry' does not match the requirement's selector ('setSecureTextEntry:')
If I use the suggested 'fix-it', the property declaration turns into:
var @objc(setSecureTextEntry:) isSecureTextEntry: Bool = false
...but now I get the three errors:
Expected Pattern
Consecutive declarations on a line must be separated by ';'
(wants me to insert a semicolon between var
and @objc
),
and:
What is the correct way of implementing this one property?
Maybe not exactly your case, but such adoption of UITextInputTraits worked fine for me
(minor hint: UIKeyInput extends 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()
}
}
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With