标签: nswindow

通过简化动画调整NSWindows的大小

我试图用一个很好的缓动动画(EaseOut)来调整NSWindow(主要的)的大小.

我可以使用[NSWindow animator]但我没有找到添加缓动效果的方法.

你有想法或代码样本可以帮助我做到这一点吗?

cocoa core-animation nswindow

15
推荐指数
1
解决办法
8074
查看次数

mouseMoved未调用

我有一个子类NSView是一个子类的的.xib文件的组成部分NSDocument,它通过的默认行为得到活着NSDocumentControlleropenDocument:方法.在这个子类中,NSView我已经实现了方法awakeFromNib,其中NSWindow setAcceptsMouseMovedEvents:YES调用了view的方法,并且acceptsFirstMouse:返回了该方法YES.但是当我将鼠标移到它上面时mouseMoved:,我的子类的方法实现NSView不会被调用.可能是什么问题?

xcode cocoa nsview nswindow osx-lion

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

如何知道NSWindow在Mac OS X Lion中是否全屏?

我想我应该检查是否[NSApplication presentationOptions]包含NSFullScreenModeApplicationPresentationOptions,但我该如何实现呢?

编辑:使用[NSApplication presentationOptions]不像在我的基于文档的应用程序中那样,全屏可能有一些文档而其他文档没有.我现在正在寻找另一种解决方案.我想知道为什么没有一个叫做的财产[NSWindow isFullscreen]或类似的东西.

cocoa fullscreen nswindow nsapplication osx-lion

14
推荐指数
3
解决办法
9505
查看次数

文档表没有响应键盘事件

我认为这是第一个响应问题,但我不确定.我正在为表视图中的数据实现编辑窗口.在概念上与用于编辑Mail.app中的过滤规则的UI非常相似.

我有一个编辑窗口,我附加到我的主窗口:

[NSApp beginSheet: criteriaEditPanel 
   modalForWindow: [self window] 
    modalDelegate: self 
   didEndSelector: @selector(criteriaEditDidEnd:returnCode:contextInfo:) 
      contextInfo: (void *)[criteriaList objectAtIndex: index]];
Run Code Online (Sandbox Code Playgroud)

面板从主窗口的标题栏中正确显示.我可以使用鼠标操作面板上的弹出控件,但我无法编辑文本字段,我无法在字段之间切换.其他一切都很好.有任何想法吗?

cocoa objective-c nswindow nsapplication

14
推荐指数
1
解决办法
768
查看次数

将NSPoint从窗口坐标转换为视图坐标

我的应用程序有一个自定义视图,显示事件的时间轴.此视图包含在一个NSScrollView支持水平滚动时间轴的位置.使用通知,我已经实现了一种机制,该机制应该显示另一个自定义视图,当用户在时间轴中单击该事件时,该视图显示有关事件的详细信息.以下是在时间轴收到事件时处理事件的代码:

NSEvent *anEvent = [aNotification object];
NSPoint aLocationInSelf = [self convertPoint: [anEvent locationInWindow] toView: self];

// Create callout view and display
NSRect aRect = NSMakeRect(aLocationInSelf.x, aLocationInSelf.y, 300, 200);
TimelineCallout *aCallout = [[TimelineCallout alloc] initWithFrame: aRect];
[self addSubview: aCallout];
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,我将事件所记录的鼠标点击点从窗口坐标转换为视图(时间轴)坐标.

但是,当我使用调试器逐步完成此操作时,没有进行任何转换,并locationInSelf显示与我得到的点相同的坐标[anEvent locationInWindow].结果,标注被绘制在错误的位置或根本不可见.

我一定是做错了但是我弄不清楚是什么......

cocoa nsview nswindow

14
推荐指数
1
解决办法
8649
查看次数

如何禁用Sierra应用程序中的"显示标签栏"菜单选项?

我有一个使用NSWindow工具栏的应用程序.出于美观原因,我不希望用户能够自定义此工具栏.在Sierra中有一个新的菜单选项,可以插入到"菜单>视图"中Show Tab Bar.如何禁用此功能?启用它似乎只会增加工具栏的高度,因为我没有在图标下显示额外的标签.

nsmenu nswindow macos-sierra

14
推荐指数
3
解决办法
4088
查看次数

如何打开NSWindow并选择并关注窗口?

我正在尝试使用以下代码打开NSWindow:

NSWindowController *window = [[NSWindowController alloc] initWithWindowNibName:@"MainWindow"];
[window showWindow:nil];
Run Code Online (Sandbox Code Playgroud)

窗口打开正常但前一个窗口仍然是mainWindow并且是焦点.我尝试了以下代码来强制主窗口,它不起作用.该窗口仍有一个禁用的标题栏,不接受关键事件等.

[self.window makeKeyAndOrderFront:self];
[self.window makeMainWindow];
Run Code Online (Sandbox Code Playgroud)

我似乎能够让前一个窗口失去焦点的唯一方法是在调用showWindow后关闭窗口:[[NSApp mainWindow] close];

有任何想法吗?

macos cocoa objective-c nswindow nswindowcontroller

13
推荐指数
2
解决办法
1万
查看次数

如何在NSWindow关闭时收到通知

当NSWindow应该或将要关闭时,我该如何注意?我想要像windowWillClose这样的东西.不幸的是,NSWindowController没有像UIViewController那样方便的方法.那么这样做的最佳做法是什么?

谢谢
-f

cocoa appkit nswindow nswindowcontroller

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

NSWindow 拖动区域只应在主线程上无效!这将来会抛出异常

我正在编写一个带有两个线程的 Python 程序。一个显示 GUI,另一个从扫描仪获取输入并将数据保存在在线数据库中。该代码在我的树莓派上运行良好,但如果我在我的 MacBook Pro (Catalina 10.15.2) 上尝试它,我会收到上述警告,然后代码崩溃。

有谁知道如何让它工作或导致问题的原因是什么?

python macos multithreading nswindow python-3.x

13
推荐指数
2
解决办法
2万
查看次数

Snow Leopard&LSUIElement - >应用程序无法正常激活,窗口不是"活动",尽管是"关键"

我遇到了一个问题,后台应用程序使用LSUIElement = 1隐藏其停靠项,菜单栏并阻止它出现在Command-Tab应用程序切换器中.

它似乎只是雪豹的问题.

应用程序在菜单栏中放置一个NSStatusItem,并在单击时弹出一个菜单.选择"首选项..."应该会显示带有首选项的NSWindow.

第一件似乎不起作用的是Window没有在前面订购,而是出现在所有其他应用程序窗口后面.

我试着通过打电话来解决这个问题

[[NSApplication sharedApplication] activateIgnoringOtherApps: YES]
Run Code Online (Sandbox Code Playgroud)

但那没用.

过了一会儿,我发现菜单阻止了发送到运行循环的消息,所以我在MainController上编写了另一个方法,并发送了延迟消息:

[self performSelector:@selector(setFront :) withObject:[preferencesController window] afterDelay:1.0];

-(void)setFront: (id) theWindow {

 [[NSApplication sharedApplication]activateIgnoringOtherApps:YES];
 [theWindow orderFrontRegardless];
 [theWindow makeKeyWindow]; 
        [[NSApplication sharedApplication] activateIgnoringOtherApps:YES];
}
Run Code Online (Sandbox Code Playgroud)

请注意send-every-possible-message-to-make-it-do-it-it-it-doing-doing方法.

这种方式有点好,窗口在所有应用程序的所有其他窗口的顶部被带到前面,但大部分时间它都不活动,这意味着它的标题栏是灰色的.单击标题栏也不会使窗口处于活动状态.单击窗口的内部将激活它!?

这一切似乎都不是豹子的问题; 只是调用activateIgnoringOtherApps并使窗口键似乎工作正常.

在Snow Leopard中有一个新的API,用于替换应该模拟其行为的LSUIElement:

http://developer.apple.com/mac/library/releasenotes/cocoa/appkit.html

我玩过这个,但它只是SL而且我无法设置LSUIElement.

cocoa appkit nswindow

12
推荐指数
2
解决办法
3612
查看次数