ios 如何在UISearchBar中更改键盘回车键类型

bmp9r5qi  于 2023-07-01  发布在  iOS
关注(0)|答案(1)|浏览(140)

我想更改我的iOS应用程序中的searchBar调用的键盘的返回键的字符串标题。我想把标题从“搜索”改为“完成”。
我的searchBar是在UIView中以编程方式创建的。
我尝试将下面的代码片段放置在UIView的viewDidLoad()或searchBar设置方法中(参见下面的错误报告)。

DispatchQueue.main.async {
    UITextField.appearance(whenContainedInInstancesOf: [UISearchBar.self]).returnKeyType = UIReturnKeyType.done
}

它无法在任何地方更改Return键的标题。此外,它奇怪地标记了一个错误,即我试图在MainThread之外设置返回类型,但显然不是这样。下面是错误:

2023-06-28 08:15:06.873302-0400 MyApp[28389:4455820] 
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', 
reason: 'Have you sent -setReturnKeyType: to 
    <UISearchBarTextField: 0x7fccbc856a00; 
    frame = (0 0; 0 0); opaque = NO; 
    gestureRecognizers = <NSArray: 0x600003807cc0>; 
    borderStyle = RoundedRect; 
    background = <_UITextFieldSystemBackgroundProvider: 
      0x60000355eb40: 
       backgroundView=<_UISearchBarSearchFieldBackgroundView: 
         0x7fccbc75d020; 
       frame = (0 0; 0 0); 
       opaque = NO; autoresize = W+H; 
       userInteractionEnabled = NO; 
       backgroundColor = <UIDynamicSystemColor: 0x60000218fd00; 
       name = tertiarySystemFillColor>; 
       layer = <CALayer: 0x60000355ef00>>, 
    fillColor=(null), 
    textfield=<UISearchBarTextField 0x7fccbc856a00>>; 
  layer = <CALayer: 0x60000355fa80>> 

off the main thread?

要进行验证,请在日志中查找投诉:“UIKit的使用不受支持...",如果发现问题,请修复该问题。如果你只使用主线程,请在UIKit上提交一个雷达,并附上这个日志。exercisedImplementations = {“setReturnKeyType:“=();}
有什么想法吗我们都知道,雷达需要几个星期到几个月,如果有的话。
SearchBar设置方法:

func setupSearchBar() -> Void {
    myBar = UISearchBar()
    myBar.searchBarStyle = .prominent
    myBar.sizeToFit()
    myBar.isTranslucent = false
    myBar.delegate = self
    self.addSubview(myBar)
    myBar.translatesAutoresizingMaskIntoConstraints = false
    let barLeft = myBar.leftAnchor.constraint(equalTo: self.leftAnchor, constant: 0)
    let barRight = myBar.rightAnchor.constraint(equalTo: self.rightAnchor, constant: 0)
    let barTop = myBar.topAnchor.constraint(equalTo: topAnchor, constant: 0)
    let barHeight = myBar.heightAnchor.constraint(equalToConstant: 40.0)
    let barWidth = myBar.widthAnchor.constraint(greaterThanOrEqualToConstant: 220.0)
    barRight.priority = UILayoutPriority(998.0)
    barLeft.isActive = true
    barRight.isActive = true
    barTop.isActive = true
    barHeight.isActive = true
    barWidth.isActive = true
    DispatchQueue.main.async {
        UITextField.appearance(whenContainedInInstancesOf: [UISearchBar.self]).returnKeyType = UIReturnKeyType.done
    }
}
uklbhaso

uklbhaso1#

试着加上这一行:

myBar.returnKeyType = .done

相关问题