Ios 如何防止UIView在点击UITextField中的clear(清除)按钮时瞬间消失?

Ios 如何防止UIView在点击UITextField中的clear(清除)按钮时瞬间消失?,ios,swift,uitextfield,Ios,Swift,Uitextfield,我遇到了一个无法解决的问题。我有一个UITextField,允许用户输入文本进行搜索 最初,ui视图是隐藏的 在UITextField下面是一个UIView,当用户点击UITextField内部时会触发该视图(hidden=false) func textFieldShouldBeginEditing(textField: UITextField) -> Bool { inSearchModeView.hidden = false return true } UIText

我遇到了一个无法解决的问题。我有一个
UITextField
,允许用户输入文本进行搜索

最初,
ui视图
是隐藏的

UITextField
下面是一个
UIView
,当用户点击
UITextField
内部时会触发该视图(hidden=false)

func textFieldShouldBeginEditing(textField: UITextField) -> Bool
{
    inSearchModeView.hidden = false
    return true
}
UITextField
下面还有一个包含搜索结果的
UITableView
。我将其设置为,如果用户点击
UITextField
之外的任何位置,键盘将关闭。但是,为了确保如果有任何可返回的结果,我可以选择
UITableView
的内容,我设置了以下内容:

func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldReceiveTouch touch: UITouch) -> Bool
{
    if touch.view.self == videosTableView.self
    {
        return false
    }

    print("test")
    self.inSearchModeView.hidden = true

    return true
}
我希望在点击清除按钮时,
inSearchModeView
保持可见

问题是,如果我键入一个文本,然后点击清除按钮,会有1/2秒的时间
inSearchModeView
消失,然后再次出现。或者,如果我按住“清除”按钮,我会看到
inSearchModeView
消失,松开“清除”按钮后,它会再次出现并保持可见

我注意到,对于print语句,当我点击Clear按钮时,会调用
手势识别器
,即使它位于
UITextField

func textFieldShouldBeginEditing(textField: UITextField) -> Bool
{
    inSearchModeView.hidden = false
    return true
}
如果我不在
UITextField
外部点击,我的
inSearchModeView
将保持可见,那么如何将其固定到该位置

以下是我的点击手势代码:

viewDidLoad
{ 
    let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self,     
    action: "dismissKeyboard")
        view.addGestureRecognizer(tap)
}

func dismissKeyboard()
{
    // Causes the view (or one of its embedded text fields) to resign the first responder status.
    view.endEditing(true)
}

感谢

感谢iAnurag对UITouch的评论,解决了我的问题


我删除了该功能,现在它可以正常工作。

你在哪里添加手势?@iAnurag:为Clarity添加了更多代码你在手势方法中添加了UITouch参数?有什么具体原因吗?