2016-12-01 39 views
0

是否有任何API檢查正在運行的機器是否有觸摸條(或Xcode的觸摸條模擬器)?如何檢查機器是否有觸摸條

我只有在觸摸條存在的情況下才會調用一些方法。如果我只檢查響應者的touchBar屬性的可空性,即使機器不支持它,它也會自動創建一個touchBar實例。但是如果沒有意義,我不想創造一個。

回答

5

從蘋果公司的NSTouchBar reference

沒有必要,也沒有API,爲您的應用程序,以瞭解是否有可用的觸摸條。無論您的應用程序是否在支持Touch Bar的計算機上運行,​​您的應用程序的屏幕用戶界面(UI)都會顯示並且行爲方式相同。

所以很明顯蘋果的觀點是觸摸條是額外 UI它複製可用的功能在其他地方,因此您的應用程序並不需要知道它是否存在或不存在。

因此,您的問題的答案是沒有專門用於此目的的公共API。

(我懷疑你自己看着辦吧 - 考慮所謂的委託,事件產生的,等等 - 無需調用任何私有UI或依賴機器的ID,但我不知道你可以的。)

HTH

+1

啊哈,在委託調用或'makeTouchBar()'中添加一個標誌是個好主意。我錯過了蘋果在參考文獻中提到的它。謝謝。 – 1024jp

0

複製可用的功能別處

這似乎對蘋果的部分顯着愚蠢的。假設您有一個音頻/視頻應用程序,它具有某種功能的掃描器欄功能。沒有觸摸條,控件位於屏幕的主窗口中。有了觸摸條,它就在那裏。那麼,這是否意味着蘋果想要這樣的應用在這兩個地方都有這樣的控制同時

我可以看到他們允許應用程序執行此功能的唯一「缺點」是,它讓使用Touchbar mac的人難以解釋如何將該應用程序用於其他人,沒有Touchbar(反之亦然)。

我可以看到(也許)他們不希望應用程序必須具有的功能只有觸摸欄上可用,並且不可用任何其他方式。但是這讓我感覺有點像向iPhone/iPad應用程序的開發者說,一個應用程序不需要知道它正在運行哪個設備。這就是他們添加適應性佈局和特質的全部原因,對吧?不是「Touchbar/No-Touchbar」是不是同一件事?

這可能是因爲這是那些東西,是正確的,在他們的「觸摸欄API 2.0清單」上一個 - 但他們知道,如果他們允許它現在,它可能會被有人濫用。 (有人制作了一個應用程序,其行爲從根本上來說與有和沒有酒吧不同,因此它或者變得亂七八糟,試圖解釋和/或弄清楚,或者TB功能成爲一種「被忽略的stepchild接口」而不是某種東西這是經過深思熟慮的。)

+0

我用外接鍵盤,鼠標和顯示器連接的觸摸板使用MBP。觸摸杆距離我的手很遠,在正常情況下,我不會使用它。如果應用程序隱藏通常可用的屏幕控件,我會發現它很煩人,因爲我的MBP在技術上有一個觸摸條。我想蘋果有這樣的想法。 – bhaller

-1

此功能檢查系統是否爲帶有TouchBar的MacBook Pro(「MacBookPro13,2」&「MacBookPro13,3」)。如果Apple未來會使用Touch Bar發佈其他設備,則必須更新該功能。

func touchbarAvailable() -> Bool { 
    var size = 0 
    sysctlbyname("hw.model", nil, &size, nil, 0) 
    var machine = [CChar](repeating: 0, count: Int(size)) 
    sysctlbyname("hw.model", &machine, &size, nil, 0) 

    if (String(cString: machine) == "MacBookPro13,2" || String(cString: machine) == "MacBookPro13,3") { 
     return true 
    } 
    return false 
} 
+2

不是一個很好的方法,因爲當他們發佈有TouchBar支持的新模型時,你的應用就不會顯示在它們上面。 – christophercotton

相關問題