【问题标题】:searchBarTextDidBeginEditing delegate method called again on back button click在单击后退按钮时再次调用 searchBarTextDidBeginEditing 委托方法
【发布时间】:2014-08-23 04:23:56
【问题描述】:

我正在开发 iPhone 应用程序,但我曾一度陷入困境。

我有一个隐藏导航栏且搜索栏位于页面中心的 viewController。

当用户点击 searchBar 时,searchBarTextDidBeginEditing 方法被触发。

在 searchBar textDidChange 方法的文本更改之后,我在 tableview 中加载实时数据,在点击 tableview 时,我正在导航到导航栏未隐藏的其他页面。

现在,当我再次按下返回按钮时,我来到这里的搜索页面 searchBarTextDidBeginEditing 方法再次被触发。

为什么这个方法在后按时再次被调用?

请提前帮助和感谢。

【问题讨论】:

    标签: ios objective-c uitableview uisearchbar


    【解决方案1】:

    我认为 UITextField 在您导航时会将焦点保持在自身上。

    当您单击 tableView 进行导航时,请尝试 [textField resignFirstResponder]

    【讨论】:

      【解决方案2】:

      由于您的搜索显示控制器仍处于活动模式,您的SearcBarTextDidBeginEditing 被调用,

      在您的 TableView 委托方法中,

      -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
      
          [self.view endEditing:YES];
          [self.searchDisplayController.searchBar resignFirstResponder];
      
      
         // Set Navigation
      }
      

      并且在同一个类中,In View会出现SET,

      -(void)viewWillAppear:(BOOL)animated{
      
          self.searchDisplayController.Active = NO;
      
      }
      

      希望对您有所帮助!

      【讨论】:

      • 如果它对您有帮助,那么您可以接受它作为正确的参考。
      猜你喜欢
      • 2013-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-26
      相关资源
      最近更新 更多