我不确定这是否是一个错误。
在 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);
};
注意:如果您通过子视图访问 SearchBar 的 UISegment 控件,它可以正常工作
foreach (UIView v in sb.Subviews)
{
var seg = v as UISegmentedControl;
if(seg!=null)
{
CreateRoot("Some text");
};
break;
}