我正在使用禁用“富文本”选项的文本视图来显示一些纯文本。我找不到设置默认字体的方法。如果我在 IB 中输入一些文本(无论如何我都不想要),我可以在 IB 界面中设置字体,但是当用户删除字体并开始键入时,文本会更改为不同的字体和大小。我在这里阅读了一些问题和答案以及开发人员文档,但没有找到解决方案。
我需要一个特殊的文本字段,应该做以下的事情:
我不知道该用什么.
NSTextView看起来不错,但是我无法在输入时设置操作并按Enter键导致换行
NSTextField没有tab键支持,shift-enter不起作用.
有任何想法吗?谢谢!
在我的应用程序中,我有一个 NSTextView。如果我想使用键盘选择一些文本,我按 Command+c,它应该选择文本,然后 Command+v 应该粘贴所选文本。使用键盘,它不工作,但使用鼠标复制/粘贴工作。
此外,当我输入 Command+c 时,它会调用打印页面——看起来映射错误,但如何更正呢?
关于我需要设置什么才能让它由键盘处理的任何指示?
这是我的小测试应用程序的布局:
AppDelegate拥有WindowController.WindowController拥有CustomTextContainerView.CustomTextContainerView拥有一个NSScrollView嵌入MyCustomTextView(NSTextView子类).标准MainMenu和我的窗口控制器的xib 都相对空.我的窗口控制器-windowDidLoad看起来像这样:
- (void)windowDidLoad {
[super windowDidLoad];
// create CustomTextContainerView
[[self window] setContentView:self.customTextContainerView];
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试做的是将第一个响应者设置为textView,但我已经尝试了我能想到的所有内容以使其工作.
我做了这么CustomTextContainerView只是转发-becomeFirstResponder到其TextView的.我已经尝试直接在容器和textView上调用它,但我不能让它自动成为第一响应者.
注意:用户仍然可以单击文本区域并开始键入,但我要做的是自动设置第一响应者状态,因此在开始键入之前我不必单击.我错过了什么?
我有一个NSWindowController包含几个NSViewControllers.我想普遍接受使用NSWindowController类的拖放事件,而不是被其他视图拦截NSTextView(包含在a中NSViewController)
如何判断NSTextView忽略拖放事件?
drag-and-drop nstextview nsviewcontroller nswindowcontroller
我希望用户每次对我的NSTextView进行更改时都触发一个函数。我让它可以在iOS应用程序中工作,现在正尝试使其在OS X应用程序中工作。我为NSTextView创建了一个出口,并编写了以下Swift代码:
import Cocoa
class ViewController: NSViewController, NSTextViewDelegate {
@IBOutlet var textViewOutlet: NSTextView!
func textViewDidChange(textView: NSTextView) {
print("Text view changed!")
}
}
Run Code Online (Sandbox Code Playgroud)
我没有任何错误,但我的声明没有打印。
默认情况下,在 NSTextView 中,图像附件以其实际分辨率显示。对于大图像,这会导致视图中仅显示图像的一小部分。这看起来不太好,用户必须进行大量滚动才能在图像后输入文本。
例如,在下面的窗口中,您无法在文本视图中了解太多有关图像的信息。
所以问题是:如何缩小图像附件,以便它们适合 NSTextView?
我在自定义 NSTextStorage 子类中遇到表情符号问题。该类不存储传递给它的任何属性。相反,它生成自己的:
override func attributesAtIndex(location: Int, effectiveRange range: NSRangePointer) -> [String : AnyObject] {
if range != nil {
range.memory = NSMakeRange(0, self.string.length)
}
let attributes = [
NSFontAttributeName: NSFont.systemFontOfSize(14)
]
return attributes
}
override func setAttributes(attrs: [String : AnyObject]?, range: NSRange) {
// does nothing
}
Run Code Online (Sandbox Code Playgroud)
这主要工作正常。但是,如果字符串中有任何表情符号,它们就不会出现。在检查 NSTextView 对文本存储的调用时,文本视图似乎试图在任何表情符号范围出现时将其字体属性设置为 AppleColorEmoji 字体。如果您依赖文本视图作为“属性真相”的来源,那很好,但我不希望我的程序像那样工作。就我而言,文本存储需要是任何属性的唯一供应商。它无法侦听文本视图发送的任何内容,属性方面。
我是否必须手动检测字符串中的任何表情符号并手动设置 AppleColorEmoji 字体?或者,还有更好的方法?我已经尝试过使用后备字体并自动搜索包含缺失字符的字体,但是使用这些方法似乎没有涵盖表情符号。
如何从 Swift 中的 NSTextView 获取选定的字符串?
// create a range of selected text
let range = mainTextField.selectedRange()
// this works but I need a plain string not an attributed string
let str = mainTextField.textStorage?.attributedSubstring(from: range)
Run Code Online (Sandbox Code Playgroud)
也许我必须添加一个中间步骤,获取完整的字符串,然后对其应用范围?
如何制作NSTextView可滚动的?
class ViewController: NSViewController {
private let textView = NSTextView()
//MARK: Manage Views
override func viewDidLoad() {
super.viewDidLoad()
setupTextView()
}
private func setupTextView() {
textView.isEditable = false
view.addSubview(textView)
textView.translatesAutoresizingMaskIntoConstraints = false
textView.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
textView.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true
textView.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
textView.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true
}
}
Run Code Online (Sandbox Code Playgroud) 我是NSTextView的子类,设置它的默认字体:
@interface PTNfoEditField : NSTextView {
}
@end
Run Code Online (Sandbox Code Playgroud)
@implementation PTNfoEditField
-(id)init {
if(self = [super init]) {
[[self textStorage] setFont:[NSFont fontWithName:@"Courier" size:10]];
}
return self;
}
@end
Run Code Online (Sandbox Code Playgroud)
但是,这不起作用,我不知道如何以不同的方式做到这一点.谁能帮我?谢谢.
使用setFont:范围:?但我想在这里做的只是选择粗体,因为选择可能有不同的字体属性,所以,任何人都可以这么说?
我正在尝试从Lion上的先前版本恢复基于文档的应用程序.当我选择"恢复版本"时,文本视图不会反映更改.但是,如果我关闭应用程序并重新打开,则会发生更改.
我正在使用NSDocument的文件包装器变体,那么如何使文本视图的文本存储反映出立即选择的版本?我错过了什么吗?
nstextview ×13
cocoa ×9
swift ×4
fonts ×3
macos ×3
objective-c ×2
autosave ×1
bold ×1
copy-paste ×1
emoji ×1
image ×1
macos-sierra ×1
nstextfield ×1
nsview ×1
osx-lion ×1
textkit ×1
xcode ×1