Trong ứng dụng trò chuyện của tôi, tôi đang sử dụng JSQMessagesViewController để hiển thị cuộc hội thoại. Ứng dụng này cũng có các thông báo công khai mà tôi muốn tìm kiếm. Tôi hiện đang cố gắng hiển thị chúng bằng cách sử dụng JSQMessagesViewController. Đối với điều này tôi muốn ẩn inputToolbar (hoạt động) và thêm một thanh tìm kiếm.Cách thêm thanh tìm kiếm vào JSQMessagesViewController
Làm cách nào để hiển thị thanh tìm kiếm? Khi bạn nhìn vào thuộc tính topContentAdditionalInset, có vẻ như nó có thể xảy ra. Đây là mã của tôi với những nỗ lực của tôi:
override func viewDidLoad() {
super.viewDidLoad()
self.inputToolbar.removeFromSuperview()
self.searchBar.removeFromSuperview()
self.topContentAdditionalInset = 44
self.searchBar.frame = CGRect(x: 0, y: 25, width: 320, height: 44)
// Attempt 1
// self.collectionView.addSubview(self.searchBar)
// Attempt 2
// self.view.addSubview(self.searchBar)
// Attempt 3
// self.navigationController?.navigationBar.addSubview(self.searchBar)
// Attempt 4
// self.inputToolbar.addSubview(self.searchBar)
// Attempt 5
self.collectionView.superview!.addSubview(self.searchBar)
}
Cập nhật:
Các mã sau đây dường như làm việc một cách hợp lý OK. Các vấn đề với nó là: - Đó là một đứa trẻ của collectionView và do đó sẽ di chuyển với nội dung ra khỏi tầm nhìn. Thêm nó vào .superview không hoạt động. - nó cuộn xuống 44 pixel khi thanh tìm kiếm được lấy nét.
var keepRef:JSQMessagesInputToolbar!
var searchBar:UISearchBar!
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
if self.inputToolbar.superview != nil {
keepRef = self.inputToolbar
self.inputToolbar.removeFromSuperview()
}
self.topContentAdditionalInset = 44
if searchBar == nil {
searchBar = UISearchBar(frame: CGRect(x: 0, y: -44, width: 320, height: 44))
searchBar.delegate = self
self.collectionView.scrollsToTop = true
self.collectionView.addSubview(searchBar)
}
self.filterContentForSearchText("")
}
Cập nhật 2:
Dựa trên câu trả lời của Sergey (mà hoạt động) Bây giờ tôi đang sử dụng đoạn mã sau:
var keepRef:JSQMessagesInputToolbar!
var searchBar:UISearchBar!
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
self.inputToolbar.hidden = true
self.topContentAdditionalInset = 44
self.collectionView.scrollsToTop = true
if searchBar == nil {
searchBar = UISearchBar()
searchBar.setTranslatesAutoresizingMaskIntoConstraints(false)
searchBar.delegate = self
self.view.addSubview(searchBar)
let views = ["searchBar" : self.searchBar];
searchBar.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("[searchBar(44)]", options: NSLayoutFormatOptions(0), metrics: nil, views: views))
self.view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("|[searchBar]|", options: NSLayoutFormatOptions(0), metrics: nil, views: views))
self.view.addConstraint(NSLayoutConstraint(item: searchBar, attribute: .Top, relatedBy: .Equal, toItem: self.topLayoutGuide, attribute: .Bottom, multiplier: 1.0, constant: 0.0))
}
self.filterContentForSearchText("")
}
Các bạn đã thử thêm vào thanh tìm kiếm như tiêu đề xem bộ sưu tập của lượt xem? – BHendricks