これがバグかどうかはわかりません。
MonoTouch.Dialog で ScopeButton を有効にし、Index Change イベントを接続します。
UISearchBar sb = TableView.TableHeaderView as UISearchBar;
sb.ScopeButtonTitles = new string[] { "Full Text".t(), "Titles".t() };
sb.ShowsScopeBar = true;
sb.SizeToFit();
sb.SelectedScopeButtonIndexChanged += (sender, e) => {
CreateRoot(sb.Text);
};
次に、検索関数をオーバーライドします。
public override void FinishSearch()
{
//do nothing, leave the UI
}
public override void OnSearchTextChanged(string text)
{
CreateRoot(text);
}
public override void SearchButtonClicked(string text)
{
//Do nothing, leave the UI
}
その結果、OnSearchTextChanged は起動しません。
次の行を削除すると、起動して問題なく動作します。
//Remove to re-enable SearchButtonClicked
sb.SelectedScopeButtonIndexChanged += (sender, e) => {
CreateRoot(sb.Text);
};
注: SubViews を介して SearchBar の UISegment コントロールにアクセスすると、正常に動作します。
foreach (UIView v in sb.Subviews)
{
var seg = v as UISegmentedControl;
if(seg!=null)
{
CreateRoot("Some text");
};
break;
}