我在Monotuch iOS应用程序中使用以下代码创建位置搜索机制:

    public override void ViewDidLoad ()
        {
                    NavigationItem .TitleView = LocationSearchBar ;
LocationSearchBar .OnEditingStarted      += delegate {

                    if(lSAutoCompleteScreen ==null)
                        lSAutoCompleteScreen = new LSAutoCompleteScreen ();
                    lSAutoCompleteScreen .DefaultText = LocationSearchBar .Text;
                        this.NavigationController .PushViewController (lSAutoCompleteScreen,true  );

                };
}


第一次,代码工作正常。当用户开始编辑搜索栏时,应用程序显示lSAutoCompleteScreen。用户搜索,然后用户搜索回到主视图。但是问题出在现在。当您再次开始编辑时。现在,OnEditingStarted事件将触发两次!因此应用尝试将lSAutoCompleteScreen添加到NavigationController两次。他第二次尝试添加应用程序将崩溃。因为添加一个已经存在于堆栈中的viewcontroller无效。

所以问题是,为什么这个事件应该触发两次?以及为什么仅在iOS7中事件触发两次。在iOS6中,它只会触发一次。

最佳答案

每次加载View时,都要向OnEditingStarted添加一个处理程序。请尝试在类构造函数中分配处理程序,以便仅分配一次。

关于ios - OnEditingStarted在iOS 7中提高了两次,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21353382/

10-11 09:12