4

ツールチップがあります:

cellView.textField.toolTip = cellView.textField.stringValue;

常に表示されますが、テキストがクリップされた場合にのみツールチップを表示する必要があります...どうすればそれを実現できますか?

4

3 に答える 3

0

これは、テキスト フィールドのデリゲート メソッド controlTextDidEndEditing を実装し、テキストのサイズをチェックすることで実現できると思います。sizeWithAttributes: によって返されるサイズが、テキスト フィールドに入力したときに期待したサイズと一致しないことがわかったので、if ステートメントに必要な値を経験的に決定しました (この例では、テキスト フィールドの値がバインドされていました)。プロパティ、theText に)。

-(void)controlTextDidEndEditing:(NSNotification *)obj {
    NSLog(@"%@",NSStringFromRect([obj.object frame]));
    NSDictionary *dict = [NSDictionary dictionaryWithObject:[NSFont systemFontOfSize:13] forKey:@"NSFontAttributeName"];
    NSSize size = [theText sizeWithAttributes:dict];
    NSLog(@"%@",NSStringFromSize(size));
    if (size.width >69) {
        [obj.object setToolTip:theText];
    }
}
于 2012-05-26T01:39:41.697 に答える