SWIFT UISearchBar文本从右到左错误地对齐

时间:2018-02-03 14:44:45

标签: swift swift3 uisearchbar swift4 uisearchbardelegate

我试图以编程方式设置从左到右对齐的搜索栏文本,但似乎它在相反方向上添加文本(如英语),然后搜索没有结果。 感谢任何人的帮助。

4 个答案:

答案 0 :(得分:1)

您尝试以这种方式做到吗?

 searchbar.semanticContentAttribute = .forceRightToLeft

还要确保在测试时使用从右到左的语言来模拟模拟器/设备的键盘。

在模拟器上进行测试时,禁用“连接硬件键盘”(硬件->键盘->“连接硬件键盘”->删除复选标记)很有帮助,以便查看键盘布局。

答案 1 :(得分:1)

    var searchTextField: UITextField
    if #available(iOS 13.0, *) {
        searchTextField = searchController?.searchBar.searchTextField as! UITextField
    } else {
        searchTextField = searchController?.searchBar.value(forKey: "searchField") as! UITextField
    }
    searchTextField.textAlignment = .right

答案 2 :(得分:0)

您可以添加搜索栏以进行右对齐,如下所示 -

    func addSearchController() {
        let searchController = UISearchController(searchResultsController: nil)
        searchController.searchResultsUpdater = self
        searchController.obscuresBackgroundDuringPresentation = false
        searchController.searchBar.placeholder = "Search"
        navigationItem.searchController = searchController
        definesPresentationContext = true
        let searchTextField: UITextField = searchController.searchBar.value(forKey: "_searchField") as! UITextField
        searchTextField.textAlignment = .right
}

如果它能解决您的问题,请告诉我。

答案 3 :(得分:0)

如果仅使用 UISearchbar ,则可以通过以下方法更改对齐方式:

var searchTextField: UITextField
if #available(iOS 13.0, *) {
   searchTextField = searchBar.searchTextField as UITextField
} else {
    searchTextField = searchBar.value(forKey: "searchField") as! UITextField
}
    
searchTextField.textAlignment = .right