2009-08-27 4 views
3

필자는 Interface Builder에서 디자인 한 내 View에 UITextView가있는 작은 iPhone 프로젝트를 가지고 있습니다. 내 ViewController에 IBAction 메서드가 있고 그 IBAction에 UITextView를 연결했습니다. 나는 또한 내 컨트롤러에 추가했습니다 .h <UITextViewDelegate>.[iPhone SDK] [초보자] UITextView textViewDidChange가 호출되지 않습니다?

- (void)textViewDidChange:(UITextView *)textView{ 
    int count = [textView.text length]; 
    charCount.text = (NSString *)count; 
} 

그러나 앱이 실행되고 난 텍스트 뷰에 뭔가를 입력 할 때 방법 textViewDidChange에 도달되지 않습니다 : 내하는 .m 파일에서

가 나는 방법을 추가했습니다. 왜 그런가요? 또한 ViewDidLoad 메서드에서 textView.delegate = self를 추가하려고 시도했지만 디버거에서 Message없이 응용 프로그램이 충돌합니다.

내가 뭘 잘못하고있는 사람이 있습니까?

는 너무 감사

twickl이

답변

1

오, 나는 틀린 것을 깨달았다!

에서 charCount이 방법으로 설정할 수 musst :

charCount.text = [[NSNumber numberWithInt:count] stringValue]; 

지금 작동!

+0

내가 그것을 놓쳤다 고 생각할 수 없습니다. 잘 했어 :) – Tim

9

당신은 바른 길에있어 - 메소드가 호출지고 있지 않은 이유는 당신의 텍스트를 변경하기 전에 텍스트 뷰의 대리자를 설정하지 않을 것입니다 . 나는 당신의 질문에 당신이 testView.delegate = self;을 설정하려고했다는 것을 알았습니다 - textView을 의미 했습니까? 그런 오타는 흔히 디버거 메시지없이 프로그램을 중단시킵니다.

또한 textFieldDidChange: 메서드는 UITextFieldDelegate 프로토콜에 정의되어 있지 않습니다. textField:shouldChangeCharactersInRange:replacementString:을 의미했을 수도 있습니다. 이것은 텍스트 필드의 내용이 변경 될 때마다 실제로 호출되는 대리자 메서드입니다. 자신의 메서드를 IBAction에 연결한다고해서 내가 원하는 것이라고는 보장 할 수 없습니다.

둘 다 문제가 아니라면 IB 및 클래스 헤더 파일에서 다양한 연결을 모두 다시 확인해야합니다.

// MyViewController.h 

@interface MyViewController : UIViewController { 
    UITextField *textView; 
} 

@property(nonatomic,retain) IBOutlet UITextField *textView; 

- (IBAction)myAction:(id)sender; 

@end

및 구현 :

// MyViewController.m 

@implementation MyViewController 

@synthesize textView; 

- (IBAction)myAction:(id)sender { 
    // Do something 
} 

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { 
    int count = [textView.text length]; 
    charCount.text = (NSString *)count; 
} 

@end

이 경우 중요한 문서는 UITextFieldDelegate 프로토콜 참조 인 헤더는 다음과 같이 보일 것입니다.

+0

아, 나는 textView.delgate = self를 의미하며, ViewDidLoad에서 설정 한 내용입니다. 하지만 시뮬레이터에서 앱이 충돌하거나 더 잘 동결됩니다. – CaptnCrash

+0

그 줄 바로 앞에 중단 점을 설정하고 단계별로 실행할 수 있습니까? 그렇게하면 잘못 된 것을 더 정확하게 파악할 수 있습니다. (당신은보기 컨트롤러의'textView' 콘센트를 IB에있는 뷰 자체에 연결 했습니까?) – Tim

관련 문제