【问题标题】:How To Implement Custom keyboard with UISearchBar?如何使用 UISearchBar 实现自定义键盘?
【发布时间】:2012-09-30 02:20:11
【问题描述】:

在我的应用程序中,我用一种本地语言开发了一个自定义键盘。现在这个键盘可以很好地与 UITextField 和 UITextView 配合使用。对于这两个我实现了这样的自定义键盘。

textField.inputView = Customkeyboard;
textView.inputView = Customkeyboard;

但是当我为 UISearchBar 实现它时

searchBar.inputView = Customkeyboard;

它给了我跟随错误。

错误:无法设置对象 - 只读属性或未找到设置器

我也设置了它的属性和合成,但无法解决这个问题。谁能帮我解决这个问题。谢谢。

【问题讨论】:

    标签: iphone xcode keyboard uisearchbar


    【解决方案1】:

    根据UIResponder的类文档

    此属性的值为 nil。需要自定义视图来收集用户输入的响应程序对象应将此属性重新声明为读写,并使用它来管理其自定义输入视图。当接收者随后成为第一响应者时,响应者基础结构会自动呈现指定的输入视图。同样,当视图放弃其第一响应者状态时,响应者基础结构会自动关闭指定的视图。

    好的,创建一个继承自 UISearchBar 的类,如下面的 .h 和 .m 文件。在您的 .h 文件广告中包含以下几行

    @interface 搜索栏:UISearchBar
    @property (readwrite, retain) UIView *inputView;
    @结束

    在您使用它的当前控制器中,将 UISearchBar 替换为 SearchBar。

    searchBar.inputView = 自定义键盘; // 其中 searchBar 是 SearchBar 的对象,而不是 UISearchBar

    【讨论】:

    • 是的,当你说它不是你的时你是对的,因此你需要添加上面的行。您需要根据文档添加上述行来呈现此内容
    • 不,您还没有自定义搜索栏。您需要将此搜索栏子类化。就像我在上面做的那样,然后做你做的事情
    • 好主意,但我不知道哪里错了。
    • 它不仅是您需要更改的主类。您需要创建另一个继承自 UISearchBar 的不同类(.h 和 .m)。然后你需要使用那个搜索栏的对象
    • 我创建了你提到的类,这次没有错误,但我的搜索栏显示默认键盘而不是自定义键盘。
    【解决方案2】:

    您将无法为搜索栏设置它,UITextFieldUISearchBar 都继承自 UIResponder,其属性 UIView 为只读,但是 UITextField 会覆盖该属性并使其成为readAndWrite,但 searchBar 不会.

    您当然可以创建 UISearchBar 的子类并重新声明该属性,它可能工作。

    【讨论】:

    • 感谢您的快速响应,如果您提供电子邮件地址,然后我想与之共享代码,bcz 这个问题让我很受打击。thanx
    • 没什么,你只需要子类化它并声明将属性重新声明为@property (readwrite, retain) UIView *inputView;,就像 SP 在他的回答中指出的那样.
    猜你喜欢
    • 2012-10-02
    • 1970-01-01
    • 1970-01-01
    • 2019-12-29
    • 1970-01-01
    • 2017-12-01
    • 2014-09-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多