0

NSTextFieldをサブクラス化し、サブクラスでイベントメソッド(keyUp)を使用します。ユーザーがEnterキーを押したときに、メインビュー(NSTextFiledを配置したビュー)でメソッドを呼び出したいのですが、以下のコードを使用しますが、呼び出す方法はありません。メインビューの特定のメソッド

- (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   
    }   
}
4

3 に答える 3

1

This should do it...

SEL sel = @selector(textFieldDidPressEnter:);

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

Then make sure the class you want to have this message is set as the delegate. The more complete answer is to also declare textFieldDidPressEnter: as part of the delegate protocol. Here's a good resource on how to do that.

于 2012-04-28T19:37:06.157 に答える
0
if ( [self.delegate respondsToSelector:@selector(textFieldDidPressEnter:)] ) 
    [(id)self.delegate textFieldDidPressEnter:self];

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

于 2012-05-04T20:15:36.240 に答える
0

1.メイン ビュー セット: textField.delegate=self;

2.mainview.h<NSTextFieldDelegate>と subclass.h に追加

3.コメントの代わりにこのコードを使用してください

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

4.このメソッドをmainview.mに実装します

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

}
于 2012-04-28T20:14:24.267 に答える