子类化文本字段时,语言环境不会从情节提要中获取

When subclassing textfield, locale is not picking up from storyboard

我有一个 UITextField 显示 UIPickerView。为了禁用编辑菜单,我将 UITextField 子类化并在故事板中分配它。但是现在文本字段不会根据语言环境的变化而改变值。即使我切换到阿拉伯语,它也始终以英语显示值。

class PickerTextField: UITextField {

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

    override func caretRect(for position: UITextPosition) -> CGRect {
        return CGRect.zero
    }

    func selectionRects(for range: UITextRange) -> [Any] {
        return []
    }

    override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool {
        UIMenuController.shared.isMenuVisible = false
        self.resignFirstResponder()
        return false
    }
}

这是一个已知问题:iOS Storyboard localizable strings do not work on UILabel subclasses。该错误同时影响 UILabelUITextField

最简单的解决方案是在代码中本地化文本字段。