应用程序语言是英语,左边的插图显示UITextfield
s内容与左边对齐..这是正常的,但是当用户选择RTL /阿拉伯语输入语言时,字段对齐会自动翻转,如何强制对齐左边无视输入语言方向?
编辑:
我尝试过这个,但它没有解决问题
let _beginningOfDocument = fieldPassword!.beginningOfDocument
let _endOfDocument = fieldPassword!.endOfDocument
fieldPassword!.setBaseWritingDirection(.leftToRight, for: fieldPassword!.textRange(from: _beginningOfDocument , to: _endOfDocument )! )
它出来了我正在使用的一些库导致这种效果,它是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
}
}
谢谢。
在您的应用委托中,添加以下内容:
if #available(iOS 9.0, *) {
UIView.appearance().semanticContentAttribute = .forceLeftToRight
}
在Swift 4中
textField.semanticContentAttribute = UISemanticContentAttribute.forceLeftToRight
说实话,我尝试了所有这些并且对我不起作用,因为它与视图层次结构有关。有关更多信息,请阅读此note
注意iOS在视图进入窗口时应用外观更改,但不会更改已在窗口中的视图的外观。要更改当前在窗口中的视图的外观,请从视图层次结构中删除该视图,然后将其放回。
所以尝试这个,它对我有用:
extension UITextField {
open override func awakeFromNib() {
super.awakeFromNib()
if Utilities.getCurrentLanguage() == "ar" {
if textAlignment == .natural {
self.textAlignment = .right
}
}
}
}
顺便说一句,“Utilities.getCurrentLanguage()”是获取当前语言的函数。