• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

iphone - Monotouch.Dialog:启用 ScopeBar 时禁用自动搜索

[复制链接]
菜鸟教程小白 发表于 2022-12-13 00:40:37 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

当我启用 ScopeBar 并在 Monotouch.Dialog 控件上连接 SelectedScopeButtonIndexChanged 时,自动搜索功能会在您启用设置 EnabledSearch=true 已禁用。

以下是它被禁用的方式:

     UISearchBar sb = SearchBar;
     if (sb != null)
     {
        sb.ScopeButtonTitles = new string[] { "Girl".t(),"Boy".t(),"All".t() };
        sb.ShowsScopeBar = true;
        sb.SizeToFit();
        // THIS NEXT LINE KILLS SEARCH, remove to make it all work again
        sb.SelectedScopeButtonIndexChanged+= (sender, e) => {Update();};
     }



Best Answer-推荐答案


这中断搜索的原因是因为 DialogViewController 在 UISearchBar 上分配了一个自定义 UISearchBarDelegate。

当您连接到一个事件时,它会破坏委托(delegate)并将其替换为一个特殊的 UISearchBarDelegate,它将所有委托(delegate)方法转发给事件。

换句话说,您不能在同一个控件上混合和匹配委托(delegate)与事件。

一种可能的解决方案(如果您不想修补 MonoTouch.Dialog 本身)是用您自己的自定义 UISearchBarDelegate 替换现有的 sb.Delegate ,它可以实现 SearchScope 方法并将其他所有内容转发到已经存在的 UISearchBarDelegate之前设置的。

例如:

public class MySearchBarDelegate : UISearchBarDelegate
{
    UISearchBarDelegate original;
    MyDialogViewController dvc;

    public MySearchBarDelegate (MyDialogViewController dvc, UISearchBarDelegate original)
    {
        this.original = original;
    }

    public override void SelectedScopeButtonIndexChanged (UISearchBar searchBar, int selectedScope)
    {
        dvc.Update ();
    }

    public override void OnEditingStarted (UISearchBar searchBar)
    {
        original.OnEditingStarted (searchBar);
    }

    public override void OnEditingStopped (UISearchBar searchBar)
    {
        original.OnEditingStopped (searchBar);
    }

    public override void TextChanged (UISearchBar searchBar, string searchText)
    {
        original.TextChanged (searchBar, searchText);
    }

    public override void CancelButtonClicked (UISearchBar searchBar)
    {
        original.CancelButtonClicked (searchBar);
    }

    public override void SearchButtonClicked (UISearchBar searchBar)
    {
        original.SearchButtonClicked (searchBar);
    }
}

关于iphone - Monotouch.Dialog:启用 ScopeBar 时禁用自动搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14551279/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap