2017-02-13 1 views

Antwort

1

Von der Apple-Dokumentation:

Es besteht keine Notwendigkeit und keine API, für Ihre Anwendung, ob oder nicht zu wissen, gibt es eine Touch-Bar zur Verfügung. Unabhängig davon, ob Ihre App auf einem Computer ausgeführt wird, der die Touch Bar unterstützt oder nicht, wird die Benutzeroberfläche (UI) der App angezeigt und verhält sich auf die gleiche Weise.

Um zu überprüfen, ob Touchbar verfügbar ist (UI/UX zum Beispiel verbessern), sollten Sie die Delegaten implementieren und ein Bool gesetzt wie:

// 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 
} 

Quelle: https://developer.apple.com/reference/appkit/nstouchbar?language=objc

+0

danken Ihnen für Ihre Antwort, können Sie die Art und Weise sagen Sie mir zur Verfügung stehenden Ein-/Ausgänge für einen Mac zuzugreifen. damit ich erkennen kann, ob TouchBar in der Hardwareliste verfügbar ist oder nicht. –

+0

Ich aktualisiere meine Antwort – Ludovic

+0

Bitte beachten Sie diesen Fall: Angenommen, der alte Mac-Benutzer hat sein Betriebssystem aktualisiert, aber keine TouchBar (Hardware), wie können wir identifizieren. (Bcz muss ich einige Optionen in Bezug auf Touch-Bar in den Einstellungen geben.) –

1

Wenn Sie möchten, eine gewisse Kontrolle können Sie isAutomaticCustomizeTouchBarMenuItemEnabled verwenden:

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. 
    */ 
+0

@ I'L'I können wir API-Unterstützung mit OSX-Version identifizieren, angenommen, der alte Mac-Benutzer aktualisiert ihr Betriebssystem, aber nicht TouchBar (Hardware), wie können wir identifizieren. –

+0

@JebaMoses: Es gibt keine spezielle Möglichkeit, die mir bekannt ist. Ich nehme an, Sie könnten zurückgeben, ob eine TouchBar erfolgreich zurückgegeben werden konnte oder nicht. Ansonsten gibt es laut den Dokumenten wirklich keine API, mit der man umgehen kann, da die TouchBar mehr oder weniger verfügbar ist, unabhängig davon, ob das System über die Hardware verfügt, die es unterstützt. [Hier ist eine Möglichkeit, wie Sie nach einem Rückgabewert suchen können ...] (https://gist.github.com/anonymous/1f8ad96ebcfb4ecfa489ee56ce6df1f6) (Swift). Wenn nichts zurückgegeben wird, können Sie davon ausgehen, dass es keine TouchBar gibt. –

+0

Grundsätzlich können Sie in 'Obj-C' etwas tun, das äquivalent zu' if (NSTouchBar() == nil) ist ... ehrlich gesagt, ich habe keine Ahnung, ob es funktionieren wird oder nicht. Ich bekomme nichts zurück, aber ich habe keine touchBar, um es zu testen :) –

2

NSTouchBar sowie schwer in der Software arbeiten können Ware, wie vom Simulator in Xcode gezeigt. Es erfordert nicht, dass die Hardware funktioniert. In den Versionshinweisen zu Xcode 8 erfahren Sie jedoch, wie Sie testen können, ob das Betriebssystem alle Arten von Touch Bar-Funktionen unterstützt.

https://developer.apple.com/library/content/releasenotes/DeveloperTools/RN-Xcode/Introduction.html

Xcode 8.1 unterstützt Touch-Bar für Macs, die es enthalten, und unterstützt das Hinzufügen von Touch-Bar-Funktionalität, um Ihre Anwendung. (28859277) Bevor Sie die Touch Bar-Funktion in Ihrer App verwenden, vergewissern Sie sich, dass die App auf einer Mac OS-Version ausgeführt wird, die Unterstützung für Touch Bar mit einer Laufzeitprüfung bietet.

Zum Beispiel die folgenden Objective-C-Code führt eine Überprüfung der Laufzeit sicher NSTouchBar ist verfügbar zu machen:

NSClassFromString (@ "NSTouchBar") = nil

In Swift Code, eine Verfügbarkeitsprüfung tun für Mac OS 10.12.1 und eine Laufzeitprüfung für die Verfügbarkeit der Touch Bar-Klasse. Zum Beispiel:

NSClassFromString („NSTouchBar“) = nil

Verwandte Themen