在我的应用程序中,我用一种本地语言开发了一个自定义键盘。现在这个键盘可以与UITextField和UITextView配合使用。对于这两个键盘,我实现了这样的自定义键盘。
textField.inputView = Customkeyboard;
textView.inputView = Customkeyboard;
但当我为UISearchBar 实现它时
searchBar.inputView = Customkeyboard;
它给了我以下错误。
错误:无法设置对象-要么是只读属性,要么是找不到setter
我也设置了它的属性和Synthesis,但无法解决这个问题。有人能帮我解决这个问题吗。Thanx。
根据UIResponder 的类文档
此属性的值为零。需要自定义视图来收集用户输入的响应程序对象应将此属性重新声明为readwrite,并使用它来管理其自定义输入视图。当接收器随后成为第一响应者时,响应者基础结构自动呈现指定的输入视图。类似地,当视图放弃其第一个响应程序状态时,响应程序基础结构会自动驳回指定的视图。
好的,创建一个从UISearchBar继承的类,如下面的.h和.m文件。在你的.h文件中,有以下几行
@interface SearchBar:UISearchBar
@property(readwrite,retain)UIView*inputView
@结束
在您正在使用的当前控制器中,将UISearchBar替换为SearchBar。
searchBar.inputView=自定义键盘;//其中searchBar是searchBar的对象,而不是UISearchBar
您将无法为搜索栏设置它,UITextField
和UISearchBar
都继承自属性UIView为只读的UIResponder,但是UITextField会覆盖该属性并使其成为readAndWrite
,但searchbar不会。
当然,您可以创建UISearchBar的子类并重新声明该属性,它可能有效。