2016-12-17 7 views
0

UISearchControllerという奇妙な問題に直面しています。 ボタンをクリックすると、UIViewController1のナビゲーションバーに検索コントローラが追加されました。 UIViewController1では正常に動作しています。今私はUIViewController2にナビゲートしていますし、ボタンをクリックしてUISearchControllerを追加しています。以下はサンプルコードです。問題はUIViewController2でUISearchControllerが最初のレスポンダにならず、OnEditingStartedが起動していないことです。 UIViewController1で(検索コントローラを追加して)UIViewController2で使用しようとしているときに起こっています。 これは私が検索コントローラを追加してい方法です:私は問題になる可能性がどのようなUISearchControllerXamarin:UISearchControllerが最初のレスポンダになっておらず、ナビゲーションバーに追加中に編集が開始されない

NavigationController.NavigationBar.TopItem.TitleView = null; 
_searchController.SearchBar.ResignFirstResponder(); 
_searchController.SearchBar.RemoveFromSuperview(); 

を削除しようとしています

DefinesPresentationContext = true; 
_searchController = new UISearchController(searchResultsController: null) 
{ 
    WeakDelegate = this, DimsBackgroundDuringPresentation = false, WeakSearchResultsUpdater = this, 
}; 
_searchController.SearchBar.SizeToFit(); 
_searchController.SearchBar.TintColor = UIColor.Black; 
_searchController.SearchBar.WeakDelegate = this; 
_searchController.SearchBar.OnEditingStarted += OnEditingStarted; 
_searchController.SearchBar.OnEditingStopped += OnEditingStopped; 
_searchController.SearchBar.SearchButtonClicked += OnSearchButtonClicked; 
_searchController.SearchBar.CancelButtonClicked += OnSearchCancelledClicked; 
_searchController.HidesNavigationBarDuringPresentation = false; 

NavigationController.NavigationBar.TopItem.TitleView = this._searchController.SearchBar; 
_searchController.SearchBar.BecomeFirstResponder(); 

OnSearchCancelledClicked。前の画面の検索コントローラがまだアクティブで、新しい画面のコントローラを検索するための呼び出しをブロックしていますか? UIViewController2に直接ナビゲートすると、コントローラが正常に動作しています。

答えて

0

私は最終的に以下のような新しいスレッドでプロパティを設定することで、この問題を解決:

Task.Factory.StartNew(() => 
{ 
    InvokeOnMainThread(() => 
    { 
     _searchController.SearchBar.BecomeFirstResponder(); 
    }); 
}); 
関連する問題