2017-01-08 8 views
0

현재 with inputview - UIPickerView으로 작업 중이며 완료 버튼을 UIPickerView에 추가했습니다. 나는 첫 번째 사임의 ViewController 클래스 측면 함수를 호출 할 것을View Controller 외부 함수에서 ResignFirstResponder

let doneButton = UIBarButtonItem(title: "Done", style: UIBarButtonItemStyle.plain, target: self, action: #selector(ViewController.dismissPickerView)) 

func dismissPickerView() { 
    myTextField.resignFirstResponder 
} 

문제이다 사용하여 뷰 컨트롤러 클래스에서 텍스트 필드의 첫 번째 응답을 사임하여 수행 버튼을 사용하여 선택기보기를 닫을 수 있습니다 아래

func doneButton (viewcontroller: UIViewController,textfield:UITextField) { 
    let doneButton = UIBarButtonItem(title: "Done", style: UIBarButtonItemStyle.plain, target: self, action: #selector(textfield.resignFirstResponder)) 
} 

같은 myTextField에 응답자 그래서 여러 피커 뷰에 사용할 수 있지만 도움이 될 것 "func doneButton"

의견의 선택기를 구현하는 방법을 모른다

답변

0

당신은 UITextFieldTextDidBeginEditingNotification, UITextFieldTextDidEndEditingNotification을 관찰 할 헬퍼 싱글 톤 클래스를 생성합니다. 스토어/텍스트 필드 또는 통지가

이전에 통지에서 저장된 객체에 첫 번째로 반응을 사임 할 것입니다 싱글 톤 클래스에 정적 또는 개체 메서드를 추가 해고 다른 최초 응답 객체의 명확한 기준

스위프트 3.0

class KeyBoardHelper { 

var firstResponder:UIView? 

static let sharedInstance = KeyBoardHelper() 

static func initializedInstance() 
{ 
    _ = sharedInstance 
} 

init() 
{ 
    print("Start listning for keyboard event") 

    NotificationCenter.default.addObserver(self, selector: #selector(KeyBoardHelper.keyboardWillShow(notification:)), name: NSNotification.Name.UITextFieldTextDidBeginEditing, object: nil) 

    NotificationCenter.default.addObserver(self, selector: #selector(KeyBoardHelper.keyboardWillHide(notification:)), name: NSNotification.Name.UITextViewTextDidEndEditing, object: nil) 
} 

@objc func keyboardWillShow(notification:Notification) 
{ 
    firstResponder = notification.object as? UIView 
} 

@objc func keyboardWillHide(notification:Notification) 
{ 
    firstResponder = nil 
} 


static func resignKeyboard() 
{ 
    KeyBoardHelper.sharedInstance.firstResponder?.resignFirstResponder() 
} 

@objc func dismissKeyboard() 
{ 
    firstResponder?.resignFirstResponder() 
} 

static func resignBarButton() -> UIBarButtonItem 
{ 
    let barButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.done, target: KeyBoardHelper.sharedInstance, action: #selector(KeyBoardHelper.dismissKeyboard)) 
    return barButton 
} 

} 
+0

이제 시도해 보겠습니다. 내 의견을 말해줘. 그러나 나는 당신이 의미하는 것을 정말로 얻지 못합니다. doneButton 함수는 클래스가없는 신속한 파일이기 때문입니다. –

+0

AppDelegate에서 싱글 톤을 초기화하고 바톤 버튼을 생성하는 동안 싱글 톤 인스턴스를 타겟으로, 셀렉터를 싱글 톤의 사임 메소드로 전달할 수 있습니다 – Atif