Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

272
Views
¿Cómo evitar que UITextfield cambie la alineación cuando el idioma de entrada es RTL/Árabe?

El idioma de la aplicación es inglés, la ilustración de la izquierda muestra el contenido de UITextfield alineado a la izquierda... lo cual es normal, pero cuando el usuario selecciona un idioma de entrada RTL/árabe, la alineación de los campos se voltea automáticamente, cómo forzar la alineación a quedar sin tener en cuenta la dirección del idioma de entrada?

EDITAR :

Intenté esto, y no está resolviendo el problema.

 let _beginningOfDocument = fieldPassword!.beginningOfDocument let _endOfDocument = fieldPassword!.endOfDocument fieldPassword!.setBaseWritingDirection(.leftToRight, for: fieldPassword!.textRange(from: _beginningOfDocument , to: _endOfDocument )! )

alineación rápida para teclados uitextfields rtl

over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Para ser honesto, los probé todos y no me funciona porque está relacionado con la jerarquía de vistas. Para más información, puedes leer esta nota

Tenga en cuenta que iOS aplica cambios de apariencia cuando una vista ingresa a una ventana, no cambia la apariencia de una vista que ya está en una ventana. Para cambiar la apariencia de una vista que se encuentra actualmente en una ventana, elimine la vista de la jerarquía de vistas y luego vuelva a colocarla.

Así que prueba este, funcionó para mí:

 extension UITextField { open override func awakeFromNib() { super.awakeFromNib() if Utilities.getCurrentLanguage() == "ar" { if textAlignment == .natural { self.textAlignment = .right } } } }

Por cierto, "Utilities.getCurrentLanguage()" es una función para obtener el idioma actual.

over 4 years ago · Santiago Trujillo Report

0

Resultó que alguna biblioteca que estaba usando causó este efecto, es la biblioteca MOLH, usa el método swizzling, es por eso que esto fue difícil de depurar...

Pronto haré una solicitud de incorporación de cambios para que este efecto sea opcional...

 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 } }

Gracias.

over 4 years ago · Santiago Trujillo Report

0

en rápido 4

 textField.semanticContentAttribute = UISemanticContentAttribute.forceLeftToRight
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!