标签: appkit

放大NSView

我有一个NSView,用户可以在其中绘制圆圈.这些圆圈存储为NSBezierPaths数组,在drawRect:中,我遍历数组并调用-stroke每个路径.如何添加按钮来放大和缩小NSView?只是改变视图的界限?

谢谢.

cocoa objective-c nsview appkit nsscrollview

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

NSDrawNinePartImage差距

我正在努力绘制自定义按钮/文本字段NSDrawNinePartImage.我在代码中将图像分割成九个部分并将其绘制成一个矩形NSDrawNinePartImage.

不幸的是,我在绘图模式上遇到了一些空白.我认为它与我的切片代码有关,但我将它们保存为我切片的图像,它们看起来都很好(我甚至将它们放在一起,它们看起来很好).尽管有些使用相同的图像,我使用它工作的一些情况也很好.

我非常有信心它归结为实际绘图.

您是否知道NSGraphicsContext会影响它的任何或其他设置或可能导致此问题的其他设置?

有差距

有差距

没有差距

没有差距

cocoa drawing appkit

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

以编程方式取消选择NSTextView中的文本?

我正在使用以下代码取消选择NSTextView,如此处所示.不幸的是,什么也没发生.我已经尝试了我所知道的调试它,但一切似乎都正常工作,但它不会影响NSTextView.

代码:

// Sets the scrolling bounds and behavior. This might be useful, but I don't know
[[textView textContainer] setContainerSize:NSMakeSize(FLT_MAX, FLT_MAX)];
[[textView textContainer] setWidthTracksTextView:FALSE];

// The code for deselecting, beginning by making sure it is actually selected (for testing only, as strange as it is)

[textView setSelectable:TRUE];
[textView setDelegate:self];
[_window makeFirstResponder:textView];

NSText *fieldEditor = [_window fieldEditor:TRUE forObject:textView];
[fieldEditor setSelectedRange:NSMakeRange([[fieldEditor string] length],0)];
[fieldEditor setNeedsDisplay:YES];
Run Code Online (Sandbox Code Playgroud)

关于为什么这不起作用的任何想法?我确信我的插座设置正确,因为我可以操纵其他东西,比如它的字符串值.

cocoa nstextview appkit

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

使用 NSBeep() 不会发出哔哔声

我从来没有用过NSBeep。我已经导入AppKit.framework到项目中。在 Xcode 8.2 和 Swift 3 下,我有

import AppKit

class AppDelegate: NSObject, NSApplicationDelegate {
    func applicationWillFinishLaunching(_ notification: Notification) {
        NSBeep() 
    }
}
Run Code Online (Sandbox Code Playgroud)

而且没有哔哔声。我究竟做错了什么?谢谢。

macos cocoa appkit swift3

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

`ImportError: No module named AppKit` 安装 AppKit 和 PyObjC 后

我正在尝试使用 Python 2.7 在 Mac OS X Mojave 上的 Anaconda 上重新安装一些 Python 代码。这是以前在同一台机器上工作的所有东西。

我得到的错误是这样的:

Mac:~ kuzzooroo$ python
Python 2.7.15 |Anaconda, Inc.| (default, Dec 14 2018, 13:10:39)
[GCC 4.2.1 Compatible Clang 4.0.1 (tags/RELEASE_401/final)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import AppKit
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named AppKit
Run Code Online (Sandbox Code Playgroud)

小写也不起作用:

>>> import appkit
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/kuzzooroo/anaconda2/lib/python2.7/site-packages/appkit/__init__.py", line …
Run Code Online (Sandbox Code Playgroud)

python macos appkit

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

如何将 SwiftUI 按钮放入 NSToolbar?

这是NSToolbar使用附件视图控制器插入 SwiftUI 的方式:

import SwiftUI
import PlaygroundSupport

var hostingView = NSHostingView(rootView:
  ZStack {
    Color.clear
    HStack {
      Text("Hey")
      Text("SwiftUI")
    }
  }
  .padding()
  .edgesIgnoringSafeArea(.all)
)
hostingView.frame.size = hostingView.fittingSize

let titlebarAccessory = NSTitlebarAccessoryViewController()
titlebarAccessory.view = hostingView
titlebarAccessory.layoutAttribute = .trailing

let mask: NSWindow.StyleMask = [.titled, .closable, .miniaturizable, .resizable]
let window = NSWindow(
  contentRect: .init(x: 0, y: 0, width: 480, height: 300),
  styleMask: mask, backing: .buffered, defer: false)
window.center()
window.contentView = NSHostingView(rootView: Color(.windowBackgroundColor))
window.toolbar = .init()
window.titleVisibility = .hidden
window.addTitlebarAccessoryViewController(titlebarAccessory)

PlaygroundPage.current.liveView = window.contentView?.superview …
Run Code Online (Sandbox Code Playgroud)

cocoa appkit nswindow nstoolbar swiftui

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

检索所有已安装的 macOS 服务的列表?

如果您已经知道服务的名称,则可以以编程方式调用服务。据我了解,“服务”菜单是通过在每个已发布的服务上调用验证方法来构建的。

有没有办法在不使用服务用户对话框的情况下访问已安装服务的列表?

编辑:我不是指后台进程。我说的是 Finder 中“服务”菜单中的项目。概述它们在这里。

cocoa objective-c appkit swift3 macos-sierra

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

NSButton 不调用其操作

我对 NSButton 的操作遇到了一些麻烦。我以编程方式创建一个按钮...

let continueButton = NSButton(title: "Continue", target: self, action: #selector(self.continueButtonClicked))
Run Code Online (Sandbox Code Playgroud)

...调用此函数:

@objc func continueButtonClicked() {
    print("continueButtonClicked")
}
Run Code Online (Sandbox Code Playgroud)

但是,continueButtonClicked从未被调用并且该按钮似乎被禁用。我尝试启用它,但这并没有成功。

我错过了什么吗?

macos cocoa appkit nsbutton swift

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

macOS Apple 帮助创作 - 锚点

我正在尝试为我准备发布的 macOS 应用程序制作一本 Apple 帮助手册。然而,我正在尝试让锚点在我的 HTML 中工作。根据苹果的定义:

“锚点允许您唯一地标识帮助书中的主题。当用户点击指向锚点的链接时,帮助查看器会加载包含该锚点的页面。...您还可以使用锚点从应用程序中加载锚定页面,方法是:调用 NHelpManager 方法 openHelpAnchor:inBook: ...”

苹果的例子:<a name="ArrivalTimesUsingStopID"></a>

在我的 Apple 中,我有一个 NSAlert,它具有以下代码来显示帮助按钮,以便当您单击它时,它会打开指定的锚字符串。

alert.showsHelp = true
alert.helpAnchor = NSHelpManager.AnchorName(stringLiteral: "ArrivalTimesUsingStopID")
Run Code Online (Sandbox Code Playgroud)

运行代码确实会显示帮助按钮,Mac 帮助也会打开,但出现错误,指出找不到指定的内容。不知道为什么锚点不起作用,因为如果我转到帮助菜单并从那里打开它,我可以访问帮助手册。

此外,苹果公司的文件指出:

NSAlert、SFChooseIdentityPanel、SFCertificatePanel 类提供对话框的帮助按钮。要显示此类帮助按钮并将其链接到帮助书中的锚点,请在这些类中使用 setShowsHelp: 和 setHelpAnchor: 方法。

以及这些属性的文档NSAlert

-setShowsHelp:YES 将帮助按钮添加到警报面板。当按下帮助按钮时,首先会咨询代表。如果委托未实现alertShowHelp:或返回NO,则使用nil book和-setHelpAnchor:指定的锚(如果有)调用-[NSHelpManager openHelpAnchor:inBook:]。如果委托返回 NO 并且没有设置帮助锚点,则会引发异常。

...所以我知道我正确使用了这两个。

我还了解到,每次更新 Apple 帮助手册 HTML 文档时都需要创建一个 .helpindex 文件。我正在使用“Help Indexer.app”,它位于developer.apple.com 上的其他Xcode 工具中。我确保:

  • 我可以选择设置索引所有锚点。
  • 任何带有锚点的 HTML 页面都位于<meta name="ROBOTS" content="ANCHORS">标头中,因此锚点会被索引。
  • 我的 Apple 帮助手册 plist 文件正确指向由“Help Indexer.app”创建的 .helpindex 文件。

但即使完成了所有这些,我仍无法将 Apple 帮助手册打开到正确的锚点,甚至无法打开 Apple 帮助手册的标题页。

我已阅读 https://developer.apple.com/library/archive/documentation/Carbon/Conceptual/ProvidingUserAssitAppleHelp/user_help_intro/user_assistance_intro.html#//apple_ref/doc/uid/TP30000903-CH204-CHDIDJFE

从头到尾多次,我无法找到解决方案或在线任何地方。 …

macos nsalert appkit apple-help

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

macOS:如何在没有停靠栏图标的情况下显示菜单栏主菜单

我有一个 macOS 应用程序,其菜单栏中有一个主菜单(不是 NSStatusItem)。我希望当应用程序的一个窗口聚焦时,该主菜单可见。但是,我不希望这个窗口有一个停靠图标。

当我将 LSUIElement 设置为 true 时,我注意到菜单栏永远不会出现。

我有一种感觉 LSUIElement 完全打破了菜单栏。是否有其他方法可以在没有停靠图标的情况下提供应用程序菜单栏菜单?

我是10.14.3。奇怪的是其他人似乎成功地在应用程序中创建了菜单栏。但无论我多少次聚焦我的应用程序,菜单栏都不会出现。

setActivationPolcy(...) 似乎完全阻止主菜单出现。LSUIElement 也不显示菜单。

macos cocoa appkit

5
推荐指数
0
解决办法
510
查看次数