2

NSTokenFieldでは、トークンを削除している間、デリゲートメソッドが存在しないようです。

私はラッパーデリゲートを作ってみました:

#import "tokenDelegate.h"

@implementation tokenDelegate
@synthesize token,owner; 

-(id)initWithWrappedToken:(id)token1 owner:(id<TokenWrapperDelegate>)owner1
{
    self.owner = owner1;
    self.token = token1;
    return self;

}

-(void)dealloc {
    [owner tokenWasDeleted:self.token];
    self.token = nil;
    [super dealloc];
}


@end

そして所有者のために私は試しました:

- (NSString *)tokenField:(NSTokenField *)tokenField editingStringForRepresentedObject:(id)representedObject;
{ 
    del = [[tokenDelegate alloc] initWithWrappedToken:nil owner:self];
    del.token = representedObject;
    [del release];
    return [representedObject description];

}

-(void)tokenWasDeleted:(id)token
{
    NSLog(@"token %@",token);
}

問題は次のとおりです。

編集中は「tokenWasDeleted」が呼び出しています。(それは結構です)。しかし、トークンを選択すると、直接削除「tokenWasDeleted」が呼び出されません。

削除されたトークンのインデックスを取得できるように、誰かがこれをどうするかを手伝ってもらえますか?

ありがとう、ニーラム・ヴァーマ

4

1 に答える 1

2

tokenfeilds 変更のオブザーバーを追加するだけです: [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(actionhere) name:NSControlTextDidChangeNotification object:nil];

これは、トークンが追加および削除されるときに呼び出されます。

于 2015-06-17T17:01:21.963 に答える