如何在 Catalyst 应用程序中将搜索栏添加到 NSToolbar 中?
How to get a search bar into an NSToolbar in a Catalyst app?
我看到一些 Catalyst 应用程序向 NSToolbar 添加了一个搜索栏,我想知道如何才能做到这一点。我是否必须导入 AppKit/Cocoa 才能获得 NSSearchField 和实际的 NSToolbar?还是有一些我只是没有看到的 UISearchBars 方法?任何帮助都会很棒,谢谢。
我已经尝试导入 AppKit 和 Cocoa(使用捆绑加载器),但我认为我没有做对。如果有人对如何执行此操作有可靠的指南,请link它。
我还尝试创建一个带有 UISearchBar 自定义视图的 UIBarButtonItem,它最终不会呈现任何内容。 (可以在下面找到)
这是在 itemIdentifier.rawValue 的开关盒中找到的(在工具栏 itemForIdentifier 函数中)
let search = UISearchBar()
search.sizeToFit()
let button = UIBarButtonItem(customView: search)
button.width = 100
let toolbarItem = NSToolbarItem(itemIdentifier: itemIdentifier, barButtonItem: button)
toolbarItem.isBordered = true
toolbarItem.isEnabled = true
return toolbarItem
我找到了适合我的解决方案,也许它也适合你。
虽然我无法在工具栏中创建搜索栏,但我可以创建看起来非常像搜索栏的按钮。该按钮随后会切换 Catalyst 应用程序中搜索栏的可见性。
这是它的 (obj-c) 代码:
UIImageSymbolConfiguration *conf = [UIImageSymbolConfiguration configurationWithPointSize:32 weight:UIImageSymbolWeightRegular];
UIImage *backImage = [UIImage systemImageNamed:@"magnifyingglass" withConfiguration:conf];
UIBarButtonItem *buttonItem = [[UIBarButtonItem alloc] initWithImage:backImage style:UIBarButtonItemStylePlain target:self action:@selector(searchButtonAction)];
NSToolbarItem *item = [NSToolbarItem itemWithItemIdentifier:itemIdentifier barButtonItem:buttonItem];
item.title = @"Search";
return item;
下面是它在应用程序中的外观图片:
作为奖励,您可以使用一些不可修剪的 space 字符 (like this one) 在 "Search" 字符串之后添加 space,使按钮看起来更像一个合适的搜索栏。
外观如下:
感谢 mmackh,可以像添加任何其他工具栏项一样轻松添加搜索栏。感谢所有调查此问题的人。
https://github.com/mmackh/Catalyst-Helpers
Swift 例子
将文件添加到项目后(在本例中为桥接 header),只需 return 就像添加任何其他工具栏项一样。
let item = NSToolbarItem_Catalyst.searchItem(withItemIdentifier: "searchBar", textDidChangeHandler: { string in
print(string)
})
我看到一些 Catalyst 应用程序向 NSToolbar 添加了一个搜索栏,我想知道如何才能做到这一点。我是否必须导入 AppKit/Cocoa 才能获得 NSSearchField 和实际的 NSToolbar?还是有一些我只是没有看到的 UISearchBars 方法?任何帮助都会很棒,谢谢。
我已经尝试导入 AppKit 和 Cocoa(使用捆绑加载器),但我认为我没有做对。如果有人对如何执行此操作有可靠的指南,请link它。
我还尝试创建一个带有 UISearchBar 自定义视图的 UIBarButtonItem,它最终不会呈现任何内容。 (可以在下面找到)
这是在 itemIdentifier.rawValue 的开关盒中找到的(在工具栏 itemForIdentifier 函数中)
let search = UISearchBar()
search.sizeToFit()
let button = UIBarButtonItem(customView: search)
button.width = 100
let toolbarItem = NSToolbarItem(itemIdentifier: itemIdentifier, barButtonItem: button)
toolbarItem.isBordered = true
toolbarItem.isEnabled = true
return toolbarItem
我找到了适合我的解决方案,也许它也适合你。
虽然我无法在工具栏中创建搜索栏,但我可以创建看起来非常像搜索栏的按钮。该按钮随后会切换 Catalyst 应用程序中搜索栏的可见性。
这是它的 (obj-c) 代码:
UIImageSymbolConfiguration *conf = [UIImageSymbolConfiguration configurationWithPointSize:32 weight:UIImageSymbolWeightRegular];
UIImage *backImage = [UIImage systemImageNamed:@"magnifyingglass" withConfiguration:conf];
UIBarButtonItem *buttonItem = [[UIBarButtonItem alloc] initWithImage:backImage style:UIBarButtonItemStylePlain target:self action:@selector(searchButtonAction)];
NSToolbarItem *item = [NSToolbarItem itemWithItemIdentifier:itemIdentifier barButtonItem:buttonItem];
item.title = @"Search";
return item;
下面是它在应用程序中的外观图片:
作为奖励,您可以使用一些不可修剪的 space 字符 (like this one) 在 "Search" 字符串之后添加 space,使按钮看起来更像一个合适的搜索栏。
外观如下:
感谢 mmackh,可以像添加任何其他工具栏项一样轻松添加搜索栏。感谢所有调查此问题的人。
https://github.com/mmackh/Catalyst-Helpers
Swift 例子
将文件添加到项目后(在本例中为桥接 header),只需 return 就像添加任何其他工具栏项一样。
let item = NSToolbarItem_Catalyst.searchItem(withItemIdentifier: "searchBar", textDidChangeHandler: { string in
print(string)
})