objective-c - 返回 NSTextView 的选择属性

标签 objective-c macos cocoa nstextview

enter image description here

当您使用TextEdit并选择字符串时,它会给您选择的颜色、字体、大小和其他属性,如上所示。如何获得这些文本选择属性?我确信我需要使用 selectedTextAttributes 方法。我有以下几行代码。

- (void)textViewDidChangeSelection:(NSNotification *)notification {
    if ([notification object] == textView1) {
        ...
        ...
        NSMutableDictionary *dict = [[textView1 selectedTextAttributes] mutableCopy];
        NSLog(@"%@",dict);
    }
}

如果我运行它,结果不太像我预期的那样。

NSBackgroundColor = "NSNamedColorSpace System selectedTextBackgroundColor";
NSColor = "NSNamedColorSpace System selectedTextColor";

没有真正有用的值可用于获取字符串选择的文本颜色和其他属性。如果我向 Google 询问 selectedTextColor,我的运气不太好。

感谢您的帮助。

最佳答案

selectedTextAttributes 描述选择突出显示的外观,而不是所选文本的属性。我找了好久这个问题的答案,终于在这里找到了:

Attribute String Programming Guide

一些示例代码。对于名为 editView 的 NSTextView*,这会收集所选内容中所有不同格式范围的 NSDictionary 对象数组。

NSMutableArray* attributes = [NSMutableArray array];
NSRange selRange = editingView.selectedRange;
NSRange effectiveRange = NSMakeRange(selRange.location, 0);
while (NSMaxRange(effectiveRange) < NSMaxRange(selRange)) {
    [attributes addObject: [editingView.textStorage attributesAtIndex: NSMaxRange(effectiveRange) longestEffectiveRange: &effectiveRange inRange: selRange]];
}

关于objective-c - 返回 NSTextView 的选择属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25737937/

相关文章:

objective-c - 我可以仅使用 Interface Builder 将 nib 内容加载到 UIView 中吗?

无法在 x86_64 上使用 __objc_msg_forward

cocoa - 如何将我的 OSX Cocoa 应用程序与 facebook 连接?

xcode - 实现 NSService 方法

cocoa - 在 Cocoa 中将 PDF 转换为高分辨率图像的最佳方法

ios - 当应用程序处于事件状态时打开推送通知时,会发生崩溃

objective-c - 使用 NSPredicate 从 NSArray 中提取唯一 NSDate 的方法?

macos - 在Mac中计算目录及其子目录的特定文件类型的数量

objective-c - NSWindowController 将所有输入发送到主窗口进行处理?

objective-c - 在 NSView 上使用 NSPoint 鼠标跟踪