lumanmann / test-realm

Test on applying Realm in project
0 stars 0 forks source link

Tool bar button does not response to the click event #4

Open lumanmann opened 5 years ago

lumanmann commented 5 years ago

Tool bar button does not response to the click event I change the input view to date picker for the search bar text field, and add a tool bar with a tool bar button to dismiss the date picker. But there is no response altering clicking on the button

Expected behavior Suppose to dismiss the input view after click on DONE button

Screenshots

Code

@objc func dismissDatePicker(sender: UIBarButtonItem) {
        searchBarTextField?.endEditing(true)
    }
 func searchBar(_ searchBar: UISearchBar, selectedScopeButtonIndexDidChange selectedScope: Int) {
        if searchBarTextField == nil {
            // get the tf layer
            for v in (searchBar.subviews[0]).subviews {
                if let tf = v as? UITextField {
                    searchBarTextField = tf
                    break
                }
            }

        }
        if selectedScope == 3 {
            self.searchBarTextField!.inputView = datePicker
            self.searchBarTextField!.inputAccessoryView = UIToolbar().getCustomToolbarPicker(selector: #selector(self.dismissDatePicker))

        } else {

            self.searchBarTextField?.inputView = UITextField().inputView
            self.searchBarTextField!.inputAccessoryView = nil

        }

        searchBar.reloadInputViews()

        self.selectedScope = selectedScope

    }
extension UIToolbar {

    func getCustomToolbarPicker(selector: Selector) -> UIToolbar {

        let toolBar = UIToolbar()

        toolBar.barStyle = UIBarStyle.default
        toolBar.isTranslucent = true
        toolBar.sizeToFit()

        let doneButton = UIBarButtonItem(title: "Done", style: UIBarButtonItem.Style.plain, target: self, action: selector)
        let spaceItem = UIBarButtonItem(barButtonSystemItem: UIBarButtonItem.SystemItem.flexibleSpace, target: nil, action: nil)

        toolBar.setItems([ spaceItem, doneButton], animated: false)
        toolBar.isUserInteractionEnabled = true

        return toolBar
    }

}