Objective c 如何使用obj c识别Mac book中可用的实际触摸栏硬件?

Objective c 如何使用obj c识别Mac book中可用的实际触摸栏硬件?,objective-c,macos,nstouchbar,macbookpro-touch-bar,Objective C,Macos,Nstouchbar,Macbookpro Touch Bar,如何使用obj c代码识别实际的触摸栏硬件在Mac book中提供,这样我就可以提供触摸栏菜单选项。来自Apple文档: 您的应用程序不需要也不需要API来知道是否有可用的触摸栏。无论您的应用程序是否在支持触摸栏的机器上运行,您的应用程序的屏幕用户界面(UI)都会以相同的方式显示和运行 要检查触摸栏是否可用(例如,为了改进UI/UX),您应该实现该委托并设置如下Bool: // Declare a class variable @property (nonatomic, assign) BOOL

如何使用obj c代码识别实际的触摸栏硬件在Mac book中提供,这样我就可以提供触摸栏菜单选项。

来自Apple文档:

您的应用程序不需要也不需要API来知道是否有可用的触摸栏。无论您的应用程序是否在支持触摸栏的机器上运行,您的应用程序的屏幕用户界面(UI)都会以相同的方式显示和运行

要检查触摸栏是否可用(例如,为了改进UI/UX),您应该实现该委托并设置如下Bool:

// Declare a class variable
@property (nonatomic, assign) BOOL isTouchBarAvailable;

@available(OSX 10.12.1, *)
// A bellow version can not be installed on a new MacBook. 
// Like an iPhone 7 can't have iOS9 installed.
- (NSTouchBar *)makeTouchBar
{
    // ... here the code to make the bar
    self.isTouchBarAvailable = YES
    return touchBar
}

来源:

如果您想要一些控件,您可以使用
IsAutomaticAccustomizeTouchBarMenuItemEnabled

import Cocoa

@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {

    func applicationDidFinishLaunching(_ aNotification: Notification) {

         // Here we just opt-in for allowing our instance of the
         // NSTouchBar class to be customized throughout the app.
        if #available(OSX 10.12.2, *) {
            NSApplication.shared().isAutomaticCustomizeTouchBarMenuItemEnabled = true
        }
    }
    /*
    Whether or not a menu item to customize the touch bar can be automatically 
    added to the main menu. It will only actually be added when hardware 
    or simulator is present. Defaults to NO. Setting this property to YES 
    is the recommended way to add the customization menu item.
    */

NSTouchBar可以在软件和硬件中工作,正如Xcode中的模拟器所示。它不需要硬件来工作。但是,Xcode 8发行说明告诉您如何测试操作系统是否支持任何类型的触摸栏功能

Xcode 8.1支持Mac电脑的触摸栏功能,并支持在应用程序中添加触摸栏功能。(28859277) 在应用程序中使用触摸栏功能之前,请通过运行时检查确认应用程序正在macOS版本上运行,该版本包括对触摸栏的支持

例如,以下Objective-C代码执行运行时检查以确保NSTouchBar可用:

NSClassFromString(@“NSTouchBar”)!=零

在Swift代码中,对macOS 10.12.1进行可用性检查,并对触摸屏类的可用性进行运行时检查。例如:

NSClassFromString(“NSTouchBar”)!=零


@I'L'I我们可以使用OSX版本识别API支持,假设老Mac用户升级了他们的操作系统,但没有TouchBar(硬件),我们如何识别。@JebaMoses:我知道没有具体的方法,我想你可以返回TouchBar是否能够成功返回。否则,根据文档,实际上没有API可处理,因为无论系统是否有硬件支持,触摸栏或多或少都是可用的。(Swift)。如果没有返回任何内容,那么您可以假设没有触摸栏。基本上,在
Obj-C
中,您可以执行与
If(NSTouchBar()==nil)
等效的操作。。。老实说,我不知道它是否有效。我没有得到任何回报,但我也没有触摸板来测试:)谢谢你的友好回答,你能告诉我访问Mac可用输入/输出的方法吗。因此,我可以识别出触摸屏是否可以从硬件列表中获得。我正在更新我的答案。请考虑这个情况:假设旧的MAC用户升级了他们的操作系统,但是没有触摸条(硬件),我们如何识别。(Bcz我需要在首选项中提供一些与触摸栏相关的选项。)@JebaMoses这是不可能的!苹果推出了10.12.1版本的新款MacBookPro。新MacBook上无法安装以下版本。就像iphone7不能安装iOS9一样。@MichaelDautermann:关于代码;我看不到苹果公司提供的任何东西表明Swift和Objective-C之间有任何区别;找你自己:。。。(目标C显然是斯威夫特):D,是的,那是讽刺。