Как определить фактическое оборудование сенсорной панели, доступно в книге Mac с использованием кода объекта, чтобы я мог предоставить параметры меню сенсорной панели.
Как определить фактическое оборудование TouchBar, доступное в книге Mac, с помощью obj c?
Ответы (3)
Из документации 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
}
Источник: https://developer.apple.com/reference/appkit/nstouchbar?language=objc
10.12.2
, хотя я не могу подтвердить. Я всегда получаю @available(OSX 10.12.2, *)
при попытке реализовать любой код сенсорной панели...
- person l'L'l; 13.02.2017
.m
, а также не сможете скомпилировать Objective-C в файле .swift
(вам нужно будет использовать соединительный заголовок, чтобы получить доступ из Swift в Obj-C) .
- person Michael Dautermann; 13.02.2017
.h
) с использованием инструментов/процессов, подобных тем, которые можно найти описано в этом сообщении блога. Может быть, инженер Apple просто забыл поставить скобки или метки в нужных местах в файле .h?
- person Michael Dautermann; 13.02.2017
NSTouchBar может работать как в программном, так и в аппаратном обеспечении, как показывает симулятор в Xcode. Для работы не требуется аппаратное обеспечение. Однако в примечаниях к выпуску Xcode 8 рассказывается, как проверить, может ли ОС поддерживать какие-либо функции сенсорной панели.
https://developer.apple.com/library/content/releasenotes/DeveloperTools/RN-Xcode/Introduction.html
Xcode 8.1 поддерживает сенсорную панель для компьютеров Mac, которые ее содержат, и поддерживает добавление функциональных возможностей сенсорной панели в ваше приложение. (28859277) Прежде чем использовать функции Touch Bar в своем приложении, убедитесь, что приложение работает в версии macOS, включающей поддержку Touch Bar, с помощью проверки во время выполнения.
Например, следующий код Objective-C выполняет проверку во время выполнения, чтобы убедиться, что NSTouchBar доступен:
NSClassFromString(@"NSTouchBar") != ноль
В коде Swift выполните проверку доступности для macOS 10.12.1 и проверку доступности класса Touch Bar во время выполнения. Например:
NSClassFromString("NSTouchBar") != ноль
Если вам нужен какой-то контроль, вы можете использовать isAutomaticCustomizeTouchBarMenuItemEnabled
:
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.
*/
Obj-C
вы можете сделать что-то эквивалентное if (NSTouchBar() == nil)
... честно говоря, я понятия не имею, сработает это или нет. Мне ничего не возвращается, но у меня нет сенсорной панели, чтобы проверить это :)
- person l'L'l; 13.02.2017