- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 OSX 应用程序,它使用 NSViewController 在我的 NSView 中交换输入输出 View 。其中一个 View 是 NSOutlineView。我现在希望当用户双击大纲 View 中的一行时出现 NSPopover。目前我使用following approach让弹出窗口出现:
NSRect theRect = [[NSApp keyWindow] convertRectFromScreen: NSMakeRect(700, 400, 5, 5)];
[myPopover showRelativeToRect: theRect // Window Coordinates
ofView: [[NSApp keyWindow] contentView]
preferredEdge: NSMinYEdge];
这使得 NSPopover 出现在应用程序的底部。这可行,但我希望能够让弹出窗口恰好出现在 NSOutlineView 的单击行下方。我换入换出的每个 View 都是由 NSViewController 控制的,我认为我可以使用 NSViewController 的 view 属性来识别我的 View 位置。但是,如果我将 [[NSApp keyWindow] contentView]
替换为 myViewController.view
,我会收到 View 没有窗口且 NSPopover 崩溃的错误。显然,我遇到了麻烦 1)找到 NSView 中单击的行相对于主窗口的坐标 2)理解为什么我的 View 没有窗口。如果有人提出可以帮助我理解这些问题的建议,我将不胜感激。
更新 06/02/2013我仍在努力解决我的问题,但我发现如果我通过 MainWindowController (myControlledView) 访问 View 的属性,我可以获得 View 的正确坐标。当我询问 View 的原点和帧大小时,我得到了正确的值。我的 VC 将自定义 View 加载为 NIB 文件,当我询问加载 View 的原点时,我得到 (0,0)。我认为即使我将 View 加载为 NIB, View 相对于窗口的位置也将保持不变?我可以将 View 原点传递给我的 VC,从而正确设置 NSPopover,但这看起来相当麻烦,我认为 NIB 加载的 View 原点可以通过 VC 正确访问。
managingViewController *vc = [viewControllers objectAtIndex:[viewIndex intValue]];
[self.currentViewController.view removeFromSuperview];
[self setCurrentViewController:vc];
[self.myControlledView addSubview:vc.view];
NSLog(@"My origin: %f %f",vc.view.frame.origin.x,vc.view.frame.origin.y);
这会导致:My origin: 0.000000 0.000000
并且不是我正在寻找的,而这个:
NSLog(@"My origin: %f %f",self.myControlledView.frame.origin.x,self.myControlledView.frame.origin.y);
结果正确来源:我的来源:176.000000 38.000000
显然,我不明白有关 View 和窗口的一些内容。感谢任何帮助。
感谢您的建议和帮助!干杯,特隆德
最佳答案
当我明白我在做什么后,这变得非常简单。事实证明,我的 currentViewController 有两次分配。一份分配在 IB 中,一份分配在代码中。当我删除 IB 创建的 VC 时,我可以与正确的代码启动 View 进行交互,并且我能够使用(跟踪的)鼠标的位置来定位我的 NSPopover:
-(void)mouseMoved:(NSEvent *)theEvent {
NSPoint p = theEvent.locationInWindow;
self.myMouseX=[NSNumber numberWithFloat:p.x];
self.myMouseY=[NSNumber numberWithFloat:p.y];
}
鼠标位置用于定义我的矩形的坐标:
NSRect theRect = NSMakeRect([self.myMouseX floatValue] + 5,[self.myMouseY floatValue],1,1);
[myPopover showRelativeToRect: theRect // Window Coordinates
ofView: [[NSApp keyWindow] contentView]
preferredEdge: NSMaxXEdge];
干杯,特隆德
关于cocoa - 如何定位 NSPopover,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14615989/
我想更新我的应用程序并只切换到 Lion,因为我使用的是新的 NSPopover 类。我将部署目标和基础 SDK 设置为 10.7,但仍然收到错误消息: NSPopover: Class Unavai
Apple 在多页面 NSPopovers 中使用这些看起来相当酷的自定义 (?) 按钮: 当您突出显示某个单词并在 NSTextView 中选择“查找...”时,您可以看到它们。 有人知道这些是否适
我的代码中有一些功能可以在事件发生时打开弹出窗口。问题是,如果这些事件相继发生,则打开的弹出窗口会重叠。 我想在打开新弹出窗口时关闭一个弹出窗口。 如果有事件的弹出窗口,有什么方法可以从 nswind
我在名为 Moom 的应用程序中看到了此功能. 这看起来像这样: 是否有一种干净的方法来以这种方式装饰窗口,或者我应该创建某种恰好位于最大化按钮顶部的应用程序,透明或带有 0x0 框架,并在此创建一个
我有一个 OSX 应用程序,它使用 NSViewController 在我的 NSView 中交换输入输出 View 。其中一个 View 是 NSOutlineView。我现在希望当用户双击大纲 V
在我的 Mac 应用程序中,我想使用由 NSStatusItem 激活的 NSPopover。激活就像一个魅力,但我想摆脱 NSPopover 提供的标准窗口(白色或 HUD),并使用我自己的 Vie
我真的希望我能更具体,但不幸的是,我不能。所有适当的对象都是非零的,并且所有适当的方法调用都(大概)成功完成,但我的 NSPopover 从未出现。也没有调用任何委托(delegate)方法。 //
我正在开发 NSPopover 应用程序。我正在使用raywenderlich tutorial作为起点。 我遇到的问题是,当弹出窗口打开并且系统状态栏关闭时(例如在笔记本电脑上使用多个全屏应用程序时
我正在尝试复制 iTunes 中搜索字段的行为,以查找股票代码和名称。具体来说,当您开始在搜索字段中输入内容时,会出现一个弹出窗口,其中包含已过滤的项目。在大多数情况下,我都能做到这一点,但我无法复制
您好,我在我的一个应用程序中实现了 NSPopover,但弹出窗口不会关闭。我猜一旦我单击其他内容,它应该关闭,但事实并非如此。我知道有一个关闭弹出窗口操作,但这只适用于不同的按钮。当我按下同一按钮时
我没有找到一些动态创建 NSPopover 的示例,而是使用 Interface Builder。 以下代码出现异常,已加载 Nib ,但未设置 View : NSViewController *co
是否有与iOS应用程序的NSPopover类似的东西?尽管我已使用此功能(或至少一些非常相似的功能)下载了应用程序,但它出现在Mac的对象库中,而不是iPhone和iPad的对象库中。 所以我的问题是
我有一个 NSPopover,里面有一些按钮。 出于某种原因,当我单击弹出窗口中的任意位置时,其中一个按钮会突出显示。如何防止这种情况发生? 最佳答案 不久前,但是...在 IB 中选择按钮并在检查器
NSPopover 指针总是放在中心,当按钮放在角落时会产生不好的效果。 在 Swift 中我可以将指针向左或向右移动吗??? 我知道前段时间有人问过同样的问题,只是想知道是否有任何更新。 提前致谢
如果用户单击菜单图标以显示弹出窗口,如果用户单击弹出窗口以外的任何地方,弹出窗口将关闭,我将尝试这样做。我将行为设置为 transient ,但那不是我想的那样。 现在,如果用户单击弹出窗口的某处将焦
我有一个带有我的 View 的 xib 和一个具有 transient 行为的 NSPopover: 在 View Controller 中,我有一个像这样控制弹出窗口的操作: @IBActi
有没有办法强制 NSPopover 在分离状态下启动?我只看到 isDetached,它是 popover 状态的只读属性和 NSPopoverDelegate 方法 detachableWindow
我有一个类,它是从带有 xib 的窗口 Controller 派生的,它具有所有功能。在这个 xib 中,我有一个显示大厅列表的表格 View 。如果我双击大厅名称,我会看到一个弹出窗口,其中显示该大
我正在使用 NSPopover 并且我将一个 NSViewController 放入其中以显示为来自 NSStatusItem 的自定义 View 。大多数 View Controller 显示正确,
我有一个大问题,一周以来我都无法解决。我的情况: 我有一个带有 NSTableview 和自定义单元格的 ViewController。每个销售都有一个 nsbutton。如果您按下按钮,则会出现 n
我是一名优秀的程序员,十分优秀!