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 回答