Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

266
Vistas
¿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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar

0

en rápido 4

 textField.semanticContentAttribute = UISemanticContentAttribute.forceLeftToRight
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda