首页 > 解决方案 > 当我按一次按钮时,键盘不显示,但是当我长时间按下一个按钮时

问题描述

我在 uitextfield 上添加了一个点击,仅在该字段中长按触摸时键盘不显示。怎么做才能让键盘在按的时候弹起来,久了不按?TAP TAP 也可以工作并删除其他视图......我做错了什么?

class DeparturesView: UIViewController {
…
    private let searchTextFieldData: UISearchTextField = {
        let searchTextFieldData = UISearchTextField()
        searchTextFieldData.translatesAutoresizingMaskIntoConstraints = false
        searchTextFieldData.keyboardType = .alphabet
        searchTextFieldData.borderStyle = .roundedRect
        searchTextFieldData.autocorrectionType = .no
        searchTextFieldData.spellCheckingType = .no
        searchTextFieldData.layer.cornerRadius = 10
        searchTextFieldData.backgroundColor = .white
        searchTextFieldData.returnKeyType = .search
        return searchTextFieldData
    }()
}

 override func viewDidLoad() {
…
        //Mark - Add gesture to app
        func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool {
            return touch.view == self.view
        }
        //Mark - Hide keyboard
        let hideKeyboards = UITapGestureRecognizer(target: self.view, action: #selector(UIView.endEditing(_:)))
        hideKeyboards.delegate = self
        view.addGestureRecognizer(hideKeyboards)
        
        //Mark - Detele other view and show keyboard
        let hideTableView = UITapGestureRecognizer(target: self, action: #selector(tapHandler))
        hideTableView.numberOfTapsRequired = 1
        hideTableView.delegate = self
        searchTextFieldData.addGestureRecognizer(hideTableView)

    }
    @objc func tapHandler(_ sender: UITapGestureRecognizer){
        print("Show tap tap")
        favouriteLabel.removeFromSuperview()
        tableViewWithFavouriteBusStop.removeFromSuperview()
    }

extension DeparturesView: UITextFieldDelegate{
 
    func textFieldDidBeginEditing(_ textField: UITextField) {
        becomeFirstResponder()
    }

标签: iosswiftxcode

解决方案


按照步骤

  1. 删除“hideTableView”TapGesture

  2. 添加self.earchTextFieldData.delegate = selfviewDidLoad 和

  3. 替换“textFieldDidBeginEditing”

     func textFieldDidBeginEditing(_ textField: UITextField) {
        favouriteLabel.removeFromSuperview()
        tableViewWithFavouriteBusStop.removeFromSuperview()
        becomeFirstResponder()
     }
    

推荐阅读