これが検索を中断する理由は、DialogViewControllerがUISearchBarにカスタムUISearchBarDelegateを割り当てるためです。
イベントに接続すると、デリゲートが上書きされ、すべてのデリゲートメソッドがイベントに転送される特別なUISearchBarDelegateに置き換えられます。
つまり、デリゲートを同じコントロール上のイベントと組み合わせて一致させることはできません。
考えられる解決策の1つ(MonoTouch.Dialog自体にパッチを適用したくない場合)は、既存のsb.Delegateを独自のカスタムUISearchBarDelegateに置き換えて、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);
}
}