相关疑难解决方法(0)

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

我花了很多时间在网上搜索并与其他开发者讨论这个问题无济于事.确切的问题在这篇SO帖子中有所描述(专注于UISearchBar,但键盘没有出现),虽然已经有很多年了.

我最近在IB中使用了已弃用的UISearchDisplayController和UISearchBar,并通过iOS8的代码切换到UISearchController.

然而,我遇到的问题是焦点被正确分配(你可以看出因为取消按钮在视图加载后动画到搜索栏的右侧),但是键盘没有显示出来.

这是我的代码.

.H

@property (nonatomic, strong) UISearchController *searchController;
Run Code Online (Sandbox Code Playgroud)

.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;
}
Run Code Online (Sandbox Code Playgroud)

到目前为止我尝试过的东西.

  • 我已经尝试在0.2秒延迟时调用becomeFirstResponder,正如另一篇SO帖子中所建议的那样.

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

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

这里:

- (void)didPresentSearchController:(UISearchController *)searchController {
    //no matter what code I put in here to becomeFirstResponder, …
Run Code Online (Sandbox Code Playgroud)

keyboard objective-c uisearchbar ios uisearchcontroller

30
推荐指数
4
解决办法
1万
查看次数

加载UISearchController时自动显示键盘

我在表视图控制器中创建了一个UISearchController.我使用来自另一个视图控制器的push segue来查看此表视图控制器.我希望一旦按下表视图控制器,键盘就会在搜索栏中显示光标.

我在viewDidLoad方法中使用了搜索控制器

self.mySearchController.active = true
Run Code Online (Sandbox Code Playgroud)

它确实使搜索控制器处于活动状态,但这不会调出键盘,光标也不会放在搜索栏中.我也试过了

self.mySearchController.searchBar.becomeFirstResponder()
Run Code Online (Sandbox Code Playgroud)

这条线似乎没有任何效果.

如何自动/以编程方式调出键盘?下面是我的代码的更详细版本

class PickAddressViewController: UITableViewController, UISearchResultsUpdating {

var searchText = ""

var mySearchController = UISearchController()

override func viewDidLoad() {
    super.viewDidLoad()

    self.mySearchController = ({
        let controller = UISearchController(searchResultsController: nil)
        controller.searchResultsUpdater = self
        controller.dimsBackgroundDuringPresentation = false
        controller.searchBar.sizeToFit()
        controller.searchBar.text = self.searchText

        self.tableView.tableHeaderView = controller.searchBar

        return controller
    })()

    self.mySearchController.active = true
    self.mySearchController.searchBar.becomeFirstResponder()
}
Run Code Online (Sandbox Code Playgroud)

ios swift uisearchcontroller

8
推荐指数
2
解决办法
9131
查看次数

使UISearchController搜索栏自动激活

我已经在navigatiom栏中实现了一个带有搜索栏的UISearchController,我想在加载视图时使搜索栏处于活动状态.当我说活动时,我的意思是键盘出现,用户可以在不点击搜索栏的情况下输入他/她的搜索.

我使用以下代码初始化了UISearchController:

- (void)viewDidLoad
{
    self.searchController = [[UISearchController alloc] initWithSearchResultsController:nil];
    [self.searchController setSearchResultsUpdater:self];
    [self.searchController setDimsBackgroundDuringPresentation:NO];
    [self.searchController setHidesNavigationBarDuringPresentation:NO];
    [self.navigationItem setTitleView:self.searchController.searchBar];

    [self setDefinesPresentationContext:YES];

    [self.searchController.searchBar setDelegate:self];
    [self.searchController.searchBar setShowsCancelButton:YES];
    [self.searchController.searchBar setPlaceholder:@"City or Airfield"];

    [self.searchController.searchBar sizeToFit];
}
Run Code Online (Sandbox Code Playgroud)

我试图让我的搜索控制器处于活动状态,通话[self.searchController.searchBar becomeFirstResponder]并直接呼叫,searchBarSearchButtonClicked但没有任何作用.

objective-c uisearchbar ios uisearchcontroller

8
推荐指数
2
解决办法
2万
查看次数

UISearchController - 键盘未显示

我正在使用 UISearchController 并且搜索功能除了两件事外都有效。也许它们是相关的: a) 键盘不显示。所以我不能按“搜索”按钮 b) 在我的主 TableView 中,我访问了样式为“副标题”的原型单元格。搜索进行时,显示的单元格为“基本”样式。在这两种情况下(TableViewController 和 SearchViewController),我使用相同的单元格标识符。

有任何想法吗?这里的一些代码:

class OverviewTableViewController: UITableViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        let resultsController = SearchResultsController()
        resultsController.birds = birds
        searchController = UISearchController(searchResultsController: resultsController)
        //searchController.dimsBackgroundDuringPresentation = true

        let searchBar = searchController.searchBar
        searchBar.scopeButtonTitles = ["One", "Two"]
        searchBar.placeholder = "Search"
        searchBar.sizeToFit()
        tableView.tableHeaderView = searchBar
        searchController.searchResultsUpdater = resultsController
Run Code Online (Sandbox Code Playgroud)

第二类:

class SearchResultsController: UITableViewController, UISearchResultsUpdating {

    var items: [Item] = []
    var filtered: [Item] = []

override func viewDidLoad() {
    super.viewDidLoad()
    tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "cell")
}

// MARK: …
Run Code Online (Sandbox Code Playgroud)

uitableview ios swift uisearchcontroller

2
推荐指数
1
解决办法
1475
查看次数