2017-11-12 2 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