标签: nsviewcontroller

Cocoa听键盘命令+ up事件

我正在开发一个macOS应用程序,我想处理一个本地热键事件(命令+向上箭头键)NSViewController.

以下是我使用Swift的方法:

override func keyDown(with event: NSEvent) {

    let modifierkeys = event.modifierFlags.intersection(.deviceIndependentFlagsMask);
    let hasCommand = modifierkeys == .command;

    switch Int(event.keyCode) {
    case kVK_UpArrow where hasCommand:
        print("command up");
        break;
    case kVK_ANSI_B where hasCommand:
        print("command B");
        break;
    default:
        break;
    }
}
Run Code Online (Sandbox Code Playgroud)

当我在视图中构建并按下命令+向上时,控制台不显示任何内容.但是当我按下命令+ B时,"命令B"被注销.

那么为什么这不适用于Command +?我该怎么做到这一点?

cocoa nsevent nsviewcontroller swift

7
推荐指数
1
解决办法
735
查看次数

如何使嵌入式视图控制器成为响应者链的一部分?

我正在使用故事板开发 Mac 应用程序。我有一个窗口,它显示一个NSViewController作为其内容的窗口,其中包含一个嵌入NSSplitViewController.

在此处输入图片说明

预期的行为是作为NSSplitViewController响应者链的一部分,这样触发toggleSidebar第一响应者操作的菜单项实际上会折叠NSSplitViewController标记为侧边栏的项。

但是,这根本不会发生并且菜单项保持禁用状态。所以我的问题是,我如何才能NSSplitViewController成为响应者链的一部分?

macos cocoa first-responder nsviewcontroller swift

7
推荐指数
1
解决办法
967
查看次数

NSTextView无法使用自动布局正确调整大小

我有一个简单的布局,它包含NSView及其子视图NSTextView.NSTextView以编程方式填充了一些产生多行的文本.我使用自动布局(所有以编程方式完成)将所有内容绑定在一起.但是,当显示所有内容时,NSTextView被切断,只显示一行.

搜索网络后,我能找到的最佳答案是:

使用Autolayout扩展NSTextViews

但是,这只有在我显示所有内容后手动更改NSTextView中的文本时才有效(这不是我的用例).视图重新调整,并显示整个NSTextView.

我试图找出NSViewController何时完成布局子视图,以便我可以调用invalidateIntrinsicContentSizeNSTextView.相当于viewDidLayoutSubviewsUIViewController.

到目前为止我没有尝试过任何工作.我试图调用invalidateIntrinsicContentSizeNSTextView:

  • 在......的最后 loadView
  • 在我用我的文本填充NSTextView之后

有没有更好的方法来实现这一目标?

cocoa objective-c nsviewcontroller

6
推荐指数
1
解决办法
1942
查看次数

NSViewController中的acceptsFirstResponder和xcode 6 - Swift

有人可以向我解释如何在Swift和xcode 6中的NSViewController上设置acceptsFirstResponder吗?

该程序不允许任何覆盖该函数,并表示它不存在于超类中,但我也不能将其设置为变量,如:

self.acceptsFirstResponder = true
Run Code Online (Sandbox Code Playgroud)

有人知道吗?

objective-c nsviewcontroller swift xcode6

6
推荐指数
1
解决办法
2266
查看次数

如何快速检查哪个 NSViewController 处于活动状态

我有一个带有多个 ViewController 的应用程序,我需要检查 AppDelegate 中当前哪个 ViewController 处于活动状态。例如,我将创建一个运行函数的计时器,该函数检查特定的 ViewController 是否处于活动状态,如果是,则执行一些操作。有没有办法做到这一点?

macos nsviewcontroller swift

6
推荐指数
2
解决办法
4170
查看次数

如何在基于NSDocument的Cocoa应用程序中使用NSViewController

我有很多iOS经验,但Cocoa让我有些困惑.我阅读了几篇关于Cocoa的Apple文档,但仍然有一些我在任何地方都找不到的细节.看来文档是在基于NSDocument的Xcode模板更新为使用NSViewController之前编写的,所以我不清楚我应该如何组织我的应用程序.该模板使用NSWindow NSViewController创建一个故事板.

我的理解是我应该将NSWindowController或NSWindow子类化为对我的模型对象的引用,并在makeWindowControllers()中设置它.但是,如果我想使用NSViewController而不是只是将所有内容放在窗口中,我还需要以某种方式访问​​我的模型.我注意到在我的视图控制器中有一个叫做RepresentObject的东西,它似乎意味着要保存一些模型对象(然后被强制转换),但它总是为零.这是如何设置的?

我发现很难正确地提出这个问题,但我想我的问题是:如何在基于文档的应用程序中正确使用NSViewController?

PS:我知道NSWindowController通常用于管理多个窗口,这些窗口作用于一个文档,所以假设我只需要一个窗口,那么我就不需要NSWindowController.但是,要求可能会改变,从长远来看使用NSWindowController可能会更好,对吧?

cocoa nsdocument nsviewcontroller nswindowcontroller xcode-storyboard

6
推荐指数
1
解决办法
4507
查看次数

在Swift中处理窗口的关闭事件

如何使用swift处理窗口的关闭事件,例如,询问"你确定要关闭表单吗?"

在此输入图像描述

表格将在"是"的情况下关闭,在"否"的情况下不关闭.显示消息框对我来说不是问题.

viewWillDisappear()也适用于最小化,但我只需要关闭事件.

谢谢.

macos nsviewcontroller nswindowcontroller swift

6
推荐指数
3
解决办法
1万
查看次数

NSViewController禁用调整大小

所以我提出一个NSViewController作为一个窗口的工作表已禁用调整大小,但仍然可以调整显示为工作表的视图控制器.

如何禁用NSViewController的大小调整?

macos nsviewcontroller

6
推荐指数
2
解决办法
5552
查看次数

屏幕中心窗口

有没有办法在OSX中将窗口置于屏幕中心?

我正在使用下面的代码,但它改变了大小而不是屏幕上的位置.

override func viewDidLoad() {
        super.viewDidLoad()

        let ScreenStart = NSSize(width: (NSScreen.mainScreen()?.frame.width)! / 1.5, height: (NSScreen.mainScreen()?.frame.height)! / 1.5)

        self.view.frame.size = ScreenStart
        self.view.frame.origin = NSPoint(x: (NSScreen.mainScreen()?.frame.origin.x)!/2, y: (NSScreen.mainScreen()?.frame.height)! / 2)  
    }
Run Code Online (Sandbox Code Playgroud)

macos nsviewcontroller nswindowcontroller swift2

6
推荐指数
1
解决办法
2271
查看次数

Cocoa Swift: Subview not resizing with superview

I'm adding a subview(NSView), here is my code:

override func viewDidAppear() {
    self.view.needsDisplay = true
    let newView = NSView()
    newView.autoresizesSubviews = true
    newView.frame = view.bounds
    newView.wantsLayer = true
    newView.layer?.backgroundColor = NSColor.green.cgColor
    view.addSubview(newView)
}
Run Code Online (Sandbox Code Playgroud)

And it works fine

在此输入图像描述 But when I resize the window the subview is not resizing.

在此输入图像描述

Any of you knows why or how can make the subview resize with superview?

I'll really appreciate your help

cocoa nsview nsviewcontroller swift xcode10.2

5
推荐指数
1
解决办法
1353
查看次数