2012-04-28 11 views
0

サブクラスでNSTextFieldを使用し、サブクラスでイベントメソッド(keyUp)を使用し、メインビューでメソッドを呼び出すユーザープッシュコードの下key.i使用を入力しますが、どのようにこれはそれを行う必要があり、メインビュー私はそのコントロールの1つのサブクラスからコントロールを置くビューでメソッドを使用する方法

- (void)keyUp:(NSEvent *)theEvent 
{ 
    NSString *theArrow = [theEvent charactersIgnoringModifiers]; 
    unichar keyChar = 0; 
    keyChar = [theArrow characterAtIndex:0]; 
    if (keyChar == NSEnterCharacter) 
    { 
     //call method that exist in main view 
    } 
} 

答えて

0

1.inメインビューセット:mainview.hとする代わりにコメント

if (self.delegate && [self.delegate respondsToSelector:@selector(textFieldDidPressEnter:)]) 
      [self.delegate performSelector:@selector(textFieldDidPressEnter:) withObject:self]; 

4.implementのこのコード3.use

をsubclass.hするtextField.delegate=self;

2.add <NSTextFieldDelegate> mainview.m

-(void)textFieldDidPressEnter:(NSTextField *)txt 
{ 

} 
+0

ありがとうございました –

+0

あなたも大歓迎です:-) – danh

1

で特定のメソッドを呼び出すことがないとき、私は

SEL sel = @selector(textFieldDidPressEnter:); 

if (self.delegate && [self.delegate respondsToSelector:sel]) { 
    [self.delegate performSelector:sel withObject:self]; 
} 

その後...)それにNSTextFiledを置きますこのメッセージを持つクラスがデリゲートとして設定されていることを確認してください。より完全な答えは、delegateプロトコルの一部としてtextFieldDidPressEnter:を宣言することです。それを行う方法についてHere's a good resource

+0

このコードをどこに入力する必要がありますか、クラスをデリゲートとして設定する方法を教えてください。 –

+0

あなたがコメントを持っている場所で//メインビューに存在するメソッドを呼び出します。メインビューがtextFieldを設定する場所であれば、textField.delegate = self;と書くことができます。 "self"はに準拠して宣言する必要があります。これは、作ったメソッド名を実装する必要があります:textFieldDidPressEnter。その名前は自由に変更できます。 – danh

+0

ありがとうございました –

0
if ([self.delegate respondsToSelector:@selector(textFieldDidPressEnter:)]) 
    [(id)self.delegate textFieldDidPressEnter:self]; 
で、この方法

いいえ使用する必要はありませんperformSelector: