2015-02-01 1 views
0

UITextViewTextDidChangeNotification을 사용하려고합니다. NSNotificationCenter를 처음 사용하기 때문에 정확히 무슨 일이 벌어지고 있는지 이해하는 데 어려움을 겪고 있습니다. 나는 스토리 보드에 UITextView를 가지고 있으며, 그것의 내 ViewController 클래스에 IBOutlet을 만들고 textView라고 불렀다.스위프트 NSNotificationCenter?

override func viewDidLoad() { 
    super.viewDidLoad() 
    origin = self.view.frame.origin.y 

    if let field = textView{ 
     field.placeholder = placeholder 
     field.layer.cornerRadius = 8 
     field.layer.borderWidth = 0.5 
     field.layer.borderColor = UIColor.grayColor().CGColor 

     NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("keyPressed:"), name:UITextFieldTextDidChangeNotification, object: nil); 
    } 

    NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("keyboardWillShow:"), name:UIKeyboardWillShowNotification, object: nil); 
    NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("keyboardWillHide:"), name:UIKeyboardWillHideNotification, object: nil); 
} 

키보드 통지가 잘 작동 :

이 내있는 viewDidLoad 함수이다. 내 이해를 위해 선택기와 같은 이름의 함수를 호출합니다. 그 맞습니까? 아니면 여기에 더 많은 일이 있습니까? 나는 NSNotification을 매개 변수로 취한 keyPressed라는 함수를 만들었지 만 그 함수는 결코 호출되지 않았다. 반면 키보드를 사용할 때 keyboardWillShow 및 keyboardWillHide 함수가 호출된다. 누군가 무슨 일이 일어 났는지 설명 할 수 있습니까?

+0

있습니까 나는 이것을 사용하는 것으로했다 if 문이 실제로 실행되는지 확인하십시오. 나는 println ("Working")이나 뭔가를 거기에 넣을 것이다. – vegather

+0

나는 그것을 디버깅했으며, 실행되고 있다는 것을 알고있다. 나는 그것을 알아 냈다. 알림을 게시해야했습니다 ... – tdon

+0

정확히 무엇이 문제입니까? 또한 솔루션 편집을 제거하십시오. 해결책을 찾았 으면 답변으로 추가하고 대답을 수락하십시오. 이것이 스택 오버 플로우가 작동하는 방식입니다. – jww

답변

0

좋아, 그래서 나는 해결책을 찾아 냈다. textViewDidChange 함수에 알림을 게시해야했습니다. 그런 다음

NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("keyPressed:"), name:"keyPressed", object: nil); 

내가있는 viewDidLoad 기능에서이 기능을 만든 :

다음
NSNotificationCenter.defaultCenter().postNotificationName("keyPressed", object: nil) 

내가이 내 viewDidLoad에 함수의 통지를 인식 : 당신이

func keyPressed(sender: NSNotification) { 

} 
+1

다음을 잊지 마세요 : NSNotificationCenter.defaultCenter(). removeObserver ... –

+0

오, 잘 부탁드립니다. viewDidUnload에 들어갈 수 있을까요? – tdon

+1

또는 deinit에서 수행 할 수 있습니다. http://natashatherobot.com/ios8-where-to-remove-observer-for-nsnotification-in-swift/ –

관련 문제