2017-11-12 8 views
0

カスタムクリアボタンを表示することができましたが、他の場所をクリックしたり他のテキストフィールドをクリックしても削除されないという問題がありました。それは常に表示されます。他のフィールドまたはどこかをクリックしてクリアボタンを削除する

ここ

が私の拡張機能です。

extension UITextField { 

    func clearButtonWithImage(_ image: UIImage) { 
     let clearButton = UIButton() 
     clearButton.setImage(image, for: .normal) 
     clearButton.frame = CGRect(x: 0, y: 0, width: 20, height: 20) 
     clearButton.contentMode = .scaleAspectFit 
     clearButton.addTarget(self, action: #selector(self.clear(sender:)), for: .touchUpInside) 
     self.rightView = clearButton 
     self.rightViewMode = .always 
    } 

    func clear(sender: AnyObject) { 
     self.text = "" 
    } 

} 

とここで私はこの方法でclearbuttonを示しています。

func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool { 

     if textField == dateSearchTextField { 
      self.performSegue(withIdentifier: "showCalendar", sender: self) 
      textField.clearButtonWithImage(#imageLiteral(resourceName: "icClear")) 
      return false 
     } else if textField == timeSearchTextField { 
      self.performSegue(withIdentifier: "showTimePicker", sender: self) 
      textField.clearButtonWithImage(#imageLiteral(resourceName: "icClear")) 
      return false 
     } 
     return true 
    } 

私はテキストフィールド内でクリックしたときにのみ表示されるようにしたいです。

答えて

0

これを置き換えます

self.rightViewMode = .always 

で:

self.rightViewMode = .whileEditing 
関連する問題