【问题标题】:UISearchBar : searchBarSearchButtonClicked delegate is not calledUISearchBar : searchBarSearchButtonClicked 委托未被调用
【发布时间】:2015-10-31 00:56:52
【问题描述】:

就我而言,我会将搜索栏文本限制为最多 50 个字符。所以我使用了 shouldChangeTextInRange

- (BOOL)searchBar:(UISearchBar *)searchBar shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
return [searchBar.text length] + [text length] - range.length >= 50);
}

searchBarSearchButtonClicked在搜索栏文本超过50个字符时不会被调用。

我该如何处理?

【问题讨论】:

    标签: ios objective-c uisearchbar


    【解决方案1】:

    喜欢

    - (BOOL)searchBar:(UISearchBar *)searchBar shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
       return ([searchBar.text length] + [text length] - range.length > 50) ? NO : YES;
    }
    

    编辑:

    - (BOOL)searchBar:(UISearchBar *)searchBar shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
       return ([searchBar.text length] + [text length] - range.length <= 50);
    }
    

    同时检查

    1.您需要在视图控制器中实现UISearchBarDelegate 协议。

    @interface ViewController : UIViewController <UISearchBarDelegate>
    

    2。您需要分配委托

    searchBar.delegate = self;
    

    更多reference

    【讨论】:

    • 安布,感谢您的回复。但是我的问题没有解决。如果文本长度小于 50 表示,键盘搜索按钮工作正常。如果超过 50 意味着,它不起作用。因为shouldChangeTextInRange 委托返回NO,所以它不会调用searchBarSearchButtonClicked 委托。你能给我其他的解决方案吗?
    • @ManiApple - 当您输入超过 50 个时,条件会自动确认,如果您删除一些字符,它会起作用,但是您需要这样的答案,无论您需要启用键盘的用户类型正确,使用时按下辞职按钮要满足条件
    • 我正在使用 UISearchBar,所以键盘有搜索键。我不想放弃键盘。为什么当 shouldChangeTextInRange 返回 NO 时它不起作用。有什么线索……?如何调用超过 50 个字符的 searchBarSearchButtonClicked 委托?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-09
    • 1970-01-01
    相关资源
    最近更新 更多