Правильный способ показать uisearchController на значке кнопки стержней нажмитеIOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Anonymous
 Правильный способ показать uisearchController на значке кнопки стержней нажмите

Сообщение Anonymous »

Моя конечная цель - иметь возможность иметь постоянный опыт поиска как на iPhone, так и для iPad. UIKit custom search controller transition experience" src="https://i.sstatic.net/6Jq677BM.gif" />
What I've done to achieve this:
#1 - I call the following code from my View Controller in order to initialize a UISearchResultsController but hide the search bar initially and trigger it using Элемент кнопки с кнопкой < /p>

Код: Выделить всё

// Called from viewDidLoad
private func configureSearchExperience() {
let image = UIImage(named: "searchIconName")

searchController = createSearchController()
searchController?.searchBar.placeholder = searchPlaceHolder
searchController?.searchBar.setImage(image, for: .search, state: .normal)
searchController?.searchBar.autocapitalizationType = .none
searchController?.searchBar.isHidden = true

navigationItem.searchController = nil
navigationItem.hidesSearchBarWhenScrolling = false
}

private func createSearchController() -> UISearchController {
let viewController =  UIHostingController(rootView: SearchResultsSwiftUIView())

let search = CustomSearchController(searchResultsController: viewController)
search.delegate = self
search.showsSearchResultsController = true
search.obscuresBackgroundDuringPresentation = true
search.searchBar.delegate = self

return search
}

// Called from viewDidLoad
private func addBarButtons() {
let settingsButton = createButton(imageName: settingsIconName,
action: #selector(showSettings),
accessibilityLabel: viewModel.settingsAccessibilityIdentifier)

let searchButton = createButton(imageName: searchOutlineIconName,
action: #selector(launchSearchExperience),
accessibilityLabel: viewModel.searchAccessibilityIdentifier)

let stackView = UIStackView(arrangedSubviews: [searchButton, settingsButton])
stackView.axis = .horizontal
stackView.spacing = viewModel.barButtonInterItemSpacing

navigationItem.rightBarButtonItem = UIBarButtonItem(customView: stackView)
}

private func createButton(imageName: String, action: Selector, accessibilityLabel: String) -> UIButton {
let button = UIButton(type: .system)

if let image = UIImage(named: imageName)?.withRenderingMode(.alwaysOriginal) {
button.setImage(image, for: .normal)
}

button.addTarget(self, action: action, for: .touchUpInside)
button.accessibilityLabel = accessibilityLabel

return button
}

@objc func launchSearchExperience() {
navigationItem.searchController = searchController

// A short delay prevents occasional UI glitches when activating the search controller immediately after adding it
// to the navigation item. The 0.1s delay is an empirically chosen value that balances responsiveness and stability.
// It was also suggested in: https://stackoverflow.com/q/27951965/1619193

let searchActivationDelay = 0.1

DispatchQueue.main.asyncAfter(deadline: .now() + searchActivationDelay) { [weak self] in
self?.searchController?.isActive = true
self?.searchController?.becomeFirstResponder()
}
}
< /code>
#2 - это пользовательский searchresultscontroller, ответственный за отображение строки поиска только тогда, когда активируется uisearchresultscontroller: < /p>
class CustomSearchController: UISearchController {
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
searchBar.isHidden = false
searchBar.becomeFirstResponder()
}

override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
searchBar.isHidden = true
}
}
Вместе это дает мне опыт, который я хочу по большей части на iPhone, однако, на iPad он разбивается в сценарии, когда я перейду к детальному представлению из одного из результатов поиска, а затем переживаю, чтобы вернуться, мы начинаем иллюстрацию:
#1 - мы запускаем Icon в баторе. alt = "Ipad Bare Coots для uisearchresultscontroller" src = "https://i.sstatic.net/ct2s4sgy.png"/>
#2 - Результат поиска активируется



Подробнее здесь: https://stackoverflow.com/questions/795 ... n-icon-tap
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Правильный способ показать uisearchController на значке кнопки стержней нажмите
    Anonymous » » в форуме IOS
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous
  • Изменить навигационные кнопки и кнопки стержней и значки статуса
    Anonymous » » в форуме Android
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • Кнопка нажмите на нажмите на нажмите немедленно закрывает приложение конденсатора на Android
    Anonymous » » в форуме Android
    0 Ответы
    71 Просмотры
    Последнее сообщение Anonymous
  • Регулируйте вставки в поисковой панели UISearchController
    Anonymous » » в форуме IOS
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Как показать подсказку на значке маркера
    Anonymous » » в форуме CSS
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous

Вернуться в «IOS»