想要通过@IBInspectable实现键盘选择

nab*_*abu 4 keyboard ios swift ibdesignable ibinspectable

我想从@IBInspectabale创建键盘选择

键盘选择

如何做到这一点

我正在创建一个视图,在其中插入ImageView和TextField,现在,我将该自定义视图类创建为@IBDesignable并创建了@IBInspectable元素。

我成功创建了侧面图像和占位符元素,但是现在我尝试创建键盘类型,但遇到了问题。

代码片段:`import UIKit

@IBDesignable类CustomTextField:UIView,UITextFieldDelegate {

//custom view from the XIB file
var view: UIView!

@IBOutlet weak var textField: UITextField!
@IBOutlet weak var imageView: UIImageView!

override init(frame: CGRect) {
    super.init(frame: frame)
    loadViewFromNib ()
}

required init?(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)
    loadViewFromNib ()
}

func loadViewFromNib() {
    let bundle = Bundle(for: type(of: self))
    let nib = UINib(nibName: "CustomTextField", bundle: bundle)
    let view = nib.instantiate(withOwner: self, options: nil)[0] as! UIView
    view.frame = bounds
    view.autoresizingMask = [.flexibleWidth, .flexibleHeight]
    self.addSubview(view);



}

@IBInspectable var sideImage: UIImage? {
    get {
        return imageView.image
    }
    set(sideImage) {
        imageView.image = sideImage
    }
}

@IBInspectable var placeHolderText: String? {
    get {
        return textField.placeholder
    }
    set(placeHolderText) {
        textField.placeholder = placeHolderText
    }
}'
Run Code Online (Sandbox Code Playgroud)

以上所有工作正常,但以下内容对我不起作用:

@IBInspectable var keyboard: UIKeyboardType? {
    get{
        return UIKeyboardType(rawValue: textField.keyboardType.rawValue)
    }
    set(keyboard){
        textField.keyboardType = keyboard!
    }
}
Run Code Online (Sandbox Code Playgroud)

}

我通过创建枚举尝试了此操作,但对我没有任何效果。

nab*_*abu 5

首先感谢大家。我的问题得到解决,而无需进行额外的创建枚举和所有工作。我使用了苹果预定义的UIKeyboardType枚举。只需编写以下代码:

@IBInspectable var keyboard:Int{
    get{
        return self.textField.keyboardType.rawValue
    }
    set(keyboardIndex){
        self.textField.keyboardType = UIKeyboardType.init(rawValue: keyboardIndex)!

    }
}
Run Code Online (Sandbox Code Playgroud)

它将在“界面”构建器中显示“键盘”,您可以为键盘类型设置0,1,2 ...值。其中0,1,2表示如下:

0: default // Default type for the current input method.

1: asciiCapable // Displays a keyboard which can enter ASCII characters

2: numbersAndPunctuation // Numbers and assorted punctuation.

3: URL // A type optimized for URL entry (shows . / .com prominently).

4: numberPad // A number pad with locale-appropriate digits (0-9, ?-?, ?-?, etc.). Suitable for PIN entry.

5: phonePad // A phone pad (1-9, *, 0, #, with letters under the numbers).

6: namePhonePad // A type optimized for entering a person's name or phone number.

7: emailAddress // A type optimized for multiple email address entry (shows space @ . prominently).

8: decimalPad // A number pad with a decimal point.

9: twitter // A type optimized for twitter text entry (easy access to @ #)
Run Code Online (Sandbox Code Playgroud)


Osk*_*kar 3

无法对@IBInspectable变量使用枚举类型。您必须将 var 设置为Stringor Int

\n\n

来自苹果的文档:

\n\n
\n

您可以将 IBInspectable 属性附加到 Interface Builder 定义的运行时属性支持的任何类型的类\n 声明、类扩展或类别中的任何属性:\n 布尔值、整数或浮点值数字、字符串、本地化字符串、\n 矩形、点、大小、颜色、范围和 nil。

\n
\n