相关疑难解决方法(0)

无法将searchBar设置为firstResponder

我有一个searchBar我在tableviewcontroller中设置.我引用了这个类似的问题UISearchBar在UITableView重新出现之后无法成为第一响应者,但仍然无法将其设置为第一响应者.在.h文件中:

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

在视图didload中:

self.searchController = [[UISearchController alloc]initWithSearchResultsController:nil];
self.searchController.searchResultsUpdater = self;
self.searchController.dimsBackgroundDuringPresentation = NO;
self.searchController.hidesNavigationBarDuringPresentation = NO;

self.searchController.searchBar.frame = CGRectMake(self.searchController.searchBar.frame.origin.x, self.searchController.searchBar.frame.origin.y, self.searchController.searchBar.frame.size.width, 44.0);
self.tableView.tableHeaderView = self.searchController.searchBar;
Run Code Online (Sandbox Code Playgroud)

并在viewDidAppear:

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

当我转向视图时,searchBar会动画,但不会出现键盘.

objective-c uisearchbar first-responder ios uisearchcontroller

44
推荐指数
10
解决办法
3万
查看次数

在iOS 11之前的导航项下方搜索控制器

我使用此代码没有问题,但我想将搜索控制器放在导航项下面titleView,而不是替换它.使用iOS11,它就像设置navigationItem.searchController到它一样简单searchController,它会将它放在下面titleView,但是在navigationItem.

有关如何在iOS 11之前执行此操作的任何想法,而不是替换titleView

现行代码:

if #available(iOS 11, *) {
    navigationItem.searchController = searchController
    navigationItem.hidesSearchBarWhenScrolling = false
} else {
    navigationItem.titleView = searchController.searchBar
}
Run Code Online (Sandbox Code Playgroud)

swift ios10 ios11

11
推荐指数
1
解决办法
3822
查看次数

加载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
查看次数