gpt4 book ai didi

ios - 通过 becomeFirstResponder 将焦点分配给 UISearchController 的 UISearchBar 时,键盘不出现

转载 作者:IT王子 更新时间:2023-10-29 07:48:19 25 4
gpt4 key购买 nike

我花了很多时间在网上搜索并与其他开发人员讨论这个问题,但都无济于事。这篇 SO 帖子 ( Focus on the UISearchBar but the keyboard not appear ) 中描述了确切的问题,尽管它已经存在很多年了。

我最近从 IB 中已弃用的 UISearchDisplayController 和 UISearchBar 切换到使用 iOS8 的代码切换到 UISearchController。

但是,我遇到的问题是焦点分配正确(您可以看出,因为取消按钮在 View 加载后会在搜索栏的右侧设置动画),但是键盘没有显示。

这是我的代码。

.h

@property (nonatomic, strong) UISearchController *searchController;

.m

- (void)viewDidLoad {
[super viewDidLoad];
...
[self initializeSearchController];
....
}

- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
[self.searchController setActive:YES];
[self.searchController.searchBar becomeFirstResponder];
}

- (void)initializeSearchController {
self.searchController = [[UISearchController alloc] initWithSearchResultsController:nil];
self.searchController.searchResultsUpdater = self;
self.searchController.dimsBackgroundDuringPresentation = NO;
self.searchController.delegate = self;
self.searchController.searchBar.delegate = self;
[self.searchController.searchBar sizeToFit];

[self.tableView setTableHeaderView:self.searchController.searchBar];
self.definesPresentationContext = YES;
}

到目前为止我已经尝试过的事情。

  • 我已尝试按照另一篇 SO 帖子中的建议,延迟 0.2 秒调用 becomeFirstResponder。

  • 我在 viewDidAppear 中设置了一个断点,并验证了 self.searchController 和 self.searchController.searchBar 都是有效对象,都不是 nil。

  • 我已尝试遵循 UISearchControllerDelegate 并使用以下代码片段

这里:

- (void)didPresentSearchController:(UISearchController *)searchController {
//no matter what code I put in here to becomeFirstResponder, it doesn't
//matter because this is never called, despite setting the
//self.searchController.delegate = self AND
//self.searchController.searchBar.delegate = self.
}
  • 我在 Storyboard 中从头开始创建了一个新 View ,然后切换到那个 View ,以确保我的 View 中没有一些旧的 searchBar 残留物。这也不起作用。

  • 我只在真机(iPhone 6)上测试过,不显示键盘不是模拟器问题。

我没有想法,而且我已经在网上看到了与此相关的所有问题和答案。没有任何效果。

为了再次阐明发生了什么,searchBar 正确地成为第一响应者,它右侧的取消按钮在屏幕上动画证明了这一点,但键盘没有出现,光标也没有在 searchBar 中闪烁。

最佳答案

您的代码看起来没问题。您所描述的不是正常行为。您可以做的第一件事是创建一个仅具有 UISearchController 功能的新项目,然后查看它的运行情况。您可以使用它编辑您的问题,以便我们更好地查看。

这里有一个关于如何实现 UISearchController 的好例子:Sample-UISearchController

添加:

-(void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
[self.searchController.searchBar becomeFirstResponder];
}

MasterViewController_TableResults.m 给出了预期的结果,并且在装有 iOS 8.3 的 iPad 和 iPhone 上启动时键盘弹出。

你可以回顾一下那个项目,看看你做了什么不同的事情,

编辑:

显然,如果 [self.searchController setActive:YES]becomeFirstResponder 之前被调用,键盘将不会显示。我想知道这是否是错误。

关于ios - 通过 becomeFirstResponder 将焦点分配给 UISearchController 的 UISearchBar 时,键盘不出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30522062/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com