应用程序语言为英语,左图显示UITextfield
的内容向左对齐。这是正常现象,但是当用户选择RTL /阿拉伯语输入语言时,字段对齐会自动翻转,如何在不考虑输入语言方向的情况下强制对齐?
编辑:
我尝试了这个,但并没有解决问题
let _beginningOfDocument = fieldPassword!.beginningOfDocument
let _endOfDocument = fieldPassword!.endOfDocument
fieldPassword!.setBaseWritingDirection(.leftToRight, for: fieldPassword!.textRange(from: _beginningOfDocument , to: _endOfDocument )! )
答案 0 :(得分:0)
在您的应用程序委托中,添加以下内容:
if #available(iOS 9.0, *) {
UIView.appearance().semanticContentAttribute = .forceLeftToRight
}
答案 1 :(得分:0)
在情节提要中,文本字段属性中有一个从左到右的力,它可以为您解决问题。
答案 2 :(得分:0)
结果是我使用的某些库引起了这种影响,它是MOLH库,它使用了方法混乱,这就是为什么这很难调试的原因...
我将很快向其发出拉取请求,以使此效果为可选...
func listenToKeyboard() {
NotificationCenter.default.removeObserver(self, name: UITextInputMode.currentInputModeDidChangeNotification, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(inputModeDidChange), name: UITextInputMode.currentInputModeDidChangeNotification, object: nil)
}
@objc func inputModeDidChange(_ notification: Notification) {
if let language = self.textInputMode?.primaryLanguage, MOLHLanguage.isRTLLanguage(language: language) {
self.textAlignment = .right
} else {
self.textAlignment = .left
}
}
谢谢。
答案 3 :(得分:0)
在Swift 4中
textField.semanticContentAttribute = UISemanticContentAttribute.forceLeftToRight
答案 4 :(得分:0)
说实话,我尝试了所有这些方法,但对我来说不起作用,因为它与视图层次结构有关。有关更多信息,您可以阅读此note
注意 当视图进入窗口时,iOS会应用外观更改,但不会更改窗口中已有视图的外观。要更改当前在窗口中的视图的外观,请从视图层次结构中删除该视图,然后将其放回原处。
所以尝试这个,对我有用:
extension UITextField {
open override func awakeFromNib() {
super.awakeFromNib()
if Utilities.getCurrentLanguage() == "ar" {
if textAlignment == .natural {
self.textAlignment = .right
}
}
}
}
顺便说一句,“ Utilities.getCurrentLanguage()”是获取当前语言的函数。