我想更改我的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
}
}
1条答案
按热度按时间uklbhaso1#
试着加上这一行: