Xamarin:UISearchController 没有成为第一响应者,并且在将其添加到导航栏时没有开始编辑

Posted

技术标签:

【中文标题】Xamarin:UISearchController 没有成为第一响应者,并且在将其添加到导航栏时没有开始编辑【英文标题】:Xamarin : UISearchController is not becoming first responder and editing is not getting started while adding it to Navigation Bar 【发布时间】:2016-12-17 13:01:53 【问题描述】:

UISearchController 遇到了一个奇怪的问题。 单击按钮,我在 UIViewController1 的导航栏中添加了搜索控制器。它在 UIViewController1 中运行良好。现在我正在导航到 UIViewController2,并且我还通过单击按钮添加 UISearchController。下面是示例代码。问题是在 UIViewController2 UISearchController 没有成为第一响应者,OnEditingStarted 没有被解雇。当我在 UIViewController1 中使用(添加搜索控制器)现在尝试在 UIViewController2 中使用时,就会发生这种情况。 这就是我添加搜索控制器的方式:

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我正在尝试删除 UISearchController

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

可能是什么问题。上一个屏幕中的搜索控制器是否仍处于活动状态并阻止对新屏幕中搜索控制器的调用。如果我直接导​​航到 UIViewController2 则搜索控制器工作正常。

【问题讨论】:

【参考方案1】:

我终于通过在新线程中设置属性解决了这个问题,如下所示:

Task.Factory.StartNew(() =>

    InvokeOnMainThread(() =>
    
        _searchController.SearchBar.BecomeFirstResponder();
    );
);

【讨论】:

以上是关于Xamarin:UISearchController 没有成为第一响应者,并且在将其添加到导航栏时没有开始编辑的主要内容,如果未能解决你的问题,请参考以下文章

Xamarin.forms(或)xamarin.ios/xamarin.android(或)本机

Xamarin挖墙脚系列:Xamarin的核心

Xamarin.Forms 和 Xamarin Native 有啥区别? [关闭]

Xamarin SQLite教程Xamarin.iOS项目添加引用

新的 Xamarin 项目不使用最新的 Xamarin 版本

当 Xamarin.ios Uitest 从 Xamarin Studio 运行时,在 Xamarin 测试云上面临“停滞的错误”