4

I would like to be able to input text in either Left-to-Right and Right-to-Left languages into a UISearchBar. This means that once a user has started inputing text in right to left languages, I would like the text alignment to be to the right and vice versa.

The question is - Is there any way to catch these events of language switching? Thanks for your help.

Stavash
  • 14,244
  • 5
  • 52
  • 80

3 Answers3

2

Use this code in ViewDidLoad

    searchbar.semanticContentAttribute = .forceRightToLeft
1

Yes there is. You want to subscribe to UITextInputCurrentInputModeDidChangeNotification. See the UITextInputMode Class Reference.

yuji
  • 16,695
  • 4
  • 63
  • 64
0
func customizeSearchBar() {
            //For placeHolder to allign Right
            searchBar.semanticContentAttribute = .forceRightToLeft
            // for text field to align right
             if let textfield = searchBarText.value(forKey: "searchField") as? 
            UITextField {
                 textfield.backgroundColor = UIColor.clear
                 textfield.textAlignment = .right

                 if let leftView = textfield.leftView as? UIImageView {
                     leftView.image = leftView.image?.withRenderingMode(.alwaysTemplate)
                     leftView.tintColor = UIColor.clear
                 }
             }
        }
zaid afzal
  • 119
  • 1
  • 5