抖动搜索栏取消/结束编辑动画

Tre*_*v14 2 ios swift ios-animations

我有一个 SearchBar,我正试图让它表现得像你在 iPhone 设置中看到的那样。当它被点击时,动画将放大镜从搜索栏的中间平滑地过渡到搜索栏的左侧,并平滑地引入取消按钮。但是,当我按下取消时,动画会冻结,然后跳回正常状态,搜索图标位于栏中间,取消按钮隐藏(请参阅 GIF 预览)。我的代码中有什么使这发生的吗?这是搜索条码:

func searchBarTextDidEndEditing(_ searchBar: UISearchBar) {
    searchBar.setShowsCancelButton(false, animated: true)
}

func searchBarCancelButtonClicked(_ searchBar: UISearchBar) {
    self.view.endEditing(true)
    searchBar.setShowsCancelButton(false, animated: true)
}
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

Mat*_*lly 5

把你需要的代码放进去

public func searchBarShouldEndEditing(_ searchBar: UISearchBar) -> Bool
Run Code Online (Sandbox Code Playgroud)

不知道为什么你必须这样做shouldEnd来隐藏按钮而不是didBegin显示

public func searchBarTextDidBeginEditing(_ searchBar: UISearchBar) {
    searchBar.setShowsCancelButton(true, animated: true)
}

public func searchBarShouldEndEditing(_ searchBar: UISearchBar) -> Bool {
    searchBar.setShowsCancelButton(false, animated: true)
    return true
}

func searchBarCancelButtonClicked(_ searchBar: UISearchBar) {
    searchBar.resignFirstResponder()
}
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明