- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我遇到了这种奇怪的行为。我正在使用一个带有文本的面板,当应用程序等待某些信息时向用户显示。该面板以模态方式显示,以防止用户单击某些内容。
当加载面板隐藏时,工具栏上的所有项目都将被禁用,并且不会调用 validateToolbarItem
方法。
我以这种方式显示面板:
- (void)showInWindow:(NSWindow *)mainWindow {
sheetWindow = [self window];
[self sheetWillShow];
[NSApp beginSheet:sheetWindow modalForWindow:mainWindow modalDelegate:nil didEndSelector:nil contextInfo:nil];
[NSApp runModalForWindow:sheetWindow];
[NSApp endSheet:sheetWindow];
[sheetWindow orderOut:self];
}
- (void)dismissModal {
[sheetWindow close];
[NSApp stopModal];
}
在这种情况下如何强制工具栏进行验证?
评论后编辑:
我已经尝试过:
[[[NSApp mainWindow] 工具栏] validateVisibleItems]
[[NSApp mainWindow]更新];
[NSApp updateWindows];
[NSApp setWindowsNeedUpdate:YES];
所有在调用dismissModal
之后。我认为问题出在其他地方......
最佳答案
问题是 NSToolbar 只向 Image 类型的 NSToolbarItem 发送验证消息,而我的都不是。为了验证任何或所有 NSToolbarItems,请创建 NSToolBar 的自定义子类并覆盖 validateVisibleItems: 方法。这将向所有可见的 NSToolbarItem 发送验证消息。唯一真正的区别是,您需要在验证方法本身中启用或禁用该项目,而不是让 Toolbar 类使用返回的 BOOL 启用或禁用该项目。
@interface CustomToolbar : NSToolbar
@end
@implementation CustomToolbar
-(void)validateVisibleItems
{
for (NSToolbarItem *toolbarItem in self.visibleItems)
{
NSResponder *responder = toolbarItem.view;
while ((responder = [responder nextResponder]))
{
if ([responder respondsToSelector:toolbarItem.action])
{
[responder performSelector:@selector(validateToolbarItem:) withObject:toolbarItem];
}
}
}
}
@end
现在,假设您有一个带有 IBAction 方法的 Controller ,用于处理工具栏中 NSSegmentedControl 的操作:
- (IBAction)backButton:(NSSegmentedControl*)sender
{
NSInteger segment = sender.selectedSegment;
if (segment == 0)
{
// Action for first button segment
}
else if (segment == 1)
{
// Action for second button segment
}
}
将以下内容放置在处理工具栏项的操作的同一 Controller 中:
-(BOOL)validateToolbarItem:(NSToolbarItem *)toolbarItem
{
SEL theAction = [toolbarItem action];
if (theAction == @selector(backButton:))
{
[toolbarItem setEnabled:YES];
NSSegmentedControl *backToolbarButton = (NSSegmentedControl *)toolbarItem.view;
[backToolbarButton setEnabled:YES forSegment:0];
[backToolbarButton setEnabled:NO forSegment:1];
}
return NO;
}
结果是您可以完全控制启用或禁用哪些段。
此技术应该适用于几乎任何其他类型的 NSToolbarItem,只要该项目的接收操作由响应者链中的 Controller 处理。
我希望这会有所帮助。
关于cocoa - 如何强制 NSToolBar 验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4473662/
我想为我的 NSToolbar 制作一个图标,其应用的系统样式与 IB 中的模板图标相同。你怎么做到这一点?我无法让工具栏应用系统样式,就像 HIG 中所说的那样。 谢谢! 最佳答案 在 Mac OS
我想在NSToolbar中添加两个感人的项目,例如前进和后退按钮。 ,像这样: NSToolbar似乎默认为每个项目添加水平边距,如下所示: 我查看了 toolbarItem 下的 XIB 源代码节点
我正在制作一个 Cocoa 应用程序,带有隐藏的统一 NSToolbar 和 Titlebar。我通过在窗口 Controller 中添加一个工具栏并设置所有选项以使其不可见并保留 3 个彩色按钮来完
我的工具栏(NSToolbar)上有一个复选框,如下图所示。它的操作被调用,并且 sender.state 在每次推送时都会切换,但在工具栏上,该框永远不会被选中。 因此,切换方面的预期行为以及被调用
我正在开发一个应用程序,用户可以使用按钮显示/隐藏工具栏。问题如下:如果用户选择隐藏工具栏然后进入全屏模式,则会显示工具栏。 用户界面已通过编程方式创建(即不使用 Interface Builder)
我已经为 mac 创建了桌面应用程序。我想在自定义工具栏上放置一些图像和项目名称。我不知道如何实现这些东西。您能给我一些建议吗?提前致谢。 最佳答案 在界面生成器中,双击工具栏上的空白区域,它将打开。
我在窗口中添加了一个 NSToolBar。它固定在 window 的顶部,但我需要把它放在底部。我该怎么做? 最佳答案 据我所知,你不能。 NSToolbars 只能附加到窗口的顶部。如果您希望在窗口
我有带有字体项目的 NSToolbar 。是否可以在字体表中设置字体过滤器?例如,我不想在字体系列表中使用Arial。 或者第二种方式 - 是否可以在字体集合中创建自己的组?谢谢4回复。 最佳答案 您
我是Mac开发的初学者。我正在使用工具栏开发一个应用程序。我只是想在工具栏中添加两个自定义按钮。 工具栏将如下所示。我已经尝试过使用 XIB,但我没有得到这个东西,.,. 对此有任何想法。 提前致谢
我对 OS X 应用程序开发比较陌生,我想知道是否可以将背景图像放入 NSToolbar,例如 Game Center.app 或 Calender.app(iCal.app) 中?我环顾四周,在这里
我创建了一个应用程序,在其中实现了自定义工具栏,并且在该工具栏中放置了一个自定义项目。但我无法点击它;表明 它已被禁用。如何解决这个问题? 最佳答案 如果工具栏按钮默认处于禁用状态,并且您尚未实现 N
我需要检测 NSToolbar 是否已创建(或将创建)溢出菜单,并可能调整窗口大小以使溢出消失。但我找不到一种简单的方法来检测是否发生了溢出。 最佳答案 NSToolbar 有两种方法可以用来解决这个
我创建了一个 NSToolbar,它在 Interface Builder 中包含一些项目(并设置了它们的可见性优先级)。当我调整窗口大小时,项目会根据预期的优先级被删除,但会出现一个带有空菜单的溢出
在我的项目中,我有一个 NSToolBar,它有 5 个 NSToolBarItems。我想删除最后两个工具栏项目,其中一个是 NSToolbarSpaceItemIdentifier,然后再次重新加
NSToolbar 可以有两种尺寸,由用户使用“使用小尺寸”菜单项控制。常规工具栏尺寸要求每个项目的图标尺寸为 32x32,而小尺寸则使用 24x24。我不希望图标默认缩放,因为每个工具栏尺寸都有一对
我正在尝试制作一个可以在任何地方使用的自定义工具栏。我希望背景看起来像 nstoolbar 的灰色。该颜色用在多个地方,例如 Safari 或 Mail 的顶部。 有谁知道有什么简单的画法吗?或者在窗
Designing Toolbar Icons ' OS X Human Interface Guidelines 的部分说系统对工具栏中的图标应用了改变其外观的效果。换句话说,我们必须创建一个纯黑色
正如您从屏幕截图中看到的,“查看”按钮文本在“允许的工具栏项目”下正确对齐,但是当我将其添加到工具栏后,它会向右对齐。为什么? 最佳答案 您必须为工具栏项目设置合理的最小和最大尺寸。我认为您还必须确保
我遇到了这种奇怪的行为。我正在使用一个带有文本的面板,当应用程序等待某些信息时向用户显示。该面板以模态方式显示,以防止用户单击某些内容。 当加载面板隐藏时,工具栏上的所有项目都将被禁用,并且不会调用
如果我通过小尺寸、图标和文本更改应用程序中 NSToolbar 的大小,则应用程序会因不满足的约束而制动(尝试关闭自动布局,或让应用程序生成其布局) 我的窗口由工具栏和内部(左/右)分割 View 组
我是一名优秀的程序员,十分优秀!