2016-12-01 22 views
14

Ứng dụng TouchSwitcher thêm mặt hàng bên cạnh lightscreen và khối lượng các hạng mục: https://hazeover.com/touchswitcher.html enter image description hereLàm cách nào để có một mục trong trung tâm điều khiển của Thanh cảm ứng ở bên phải?

Có một giải pháp để hiển thị một mục vào dải kiểm soát trên khu vực bên phải của thanh cảm ứng?

Tôi không thể tìm thấy bất kỳ trợ giúp nào trong tài liệu chính thức về nó ... Hãy giúp tôi!

+0

Từ tài liệu NSTouchBar: "Ở bên phải của thanh cảm ứng, hệ thống cung cấp dải điều khiển luôn có sẵn. Dải điều khiển cho phép người dùng truy cập điều khiển tiêu chuẩn cho độ sáng màn hình, âm lượng, Siri, Các thanh ứng dụng của bạn xuất hiện ở bên trái của Dải Điều khiển (Người dùng có thể chọn ẩn Dải Điều khiển, cung cấp ứng dụng phía trước toàn bộ chiều rộng của Thanh cảm ứng.) "Điều này ngụ ý rằng thanh ứng dụng của bạn luôn xuất hiện bên trái và các mục bên phải là không thể. Bạn thậm chí không thể truy cập các mục trên thanh Control Strip. – rocky

Trả lời

4

Sau khi biên dịch lại, tôi đã phát hiện một số API trong một khung được gọi là DFRFoundation nằm trong/System/Library/PrivateFrameworks và phương thức liên quan DFRElementSetControlStripPresenceForIdentifier. Tôi thấy khá khó khăn để có được thêm, vì vậy tôi trả lời ở đây chỉ để cho bạn biết rằng API cho điều này là trong một khuôn khổ riêng tư. Hy vọng ai đó sẽ tiết lộ những bí mật một ngày nào đó.

+0

cảm ơn. Tôi cũng đang cố gắng tìm đường. – jimwan

3

Đây là what I use. Vượt qua một số NSView và số nhận dạng bạn chọn cho chức năng controlStrippify(). Nỗ lực của tôi trong việc thực hiện chính xác điều tương tự bằng cách sử dụng Swift đã dẫn đến sự cố, cổng chào mừng :). Cảm hứng từ https://github.com/a2/touch-baer.

@import Cocoa; 
@import Foundation; 

// See: https://github.com/a2/touch-baer 
extern void DFRSystemModalShowsCloseBoxWhenFrontMost(BOOL); 
extern void DFRElementSetControlStripPresenceForIdentifier(NSString *string, BOOL enabled); 

@interface NSTouchBarItem() 
+ (void)addSystemTrayItem:(NSTouchBarItem *)item; 
@end 

@interface NSTouchBar() 
+ (void)presentSystemModalFunctionBar:(NSTouchBar *)touchBar systemTrayItemIdentifier:(NSString *)identifier; 
@end 

void controlStrippify(NSView *view, NSString *identifier) { 
    if (@available(macOS 10.12.2, *)) { 
    DFRSystemModalShowsCloseBoxWhenFrontMost(YES); 

    NSCustomTouchBarItem *touchBarItem = [[NSCustomTouchBarItem alloc] initWithIdentifier:identifier]; 
    touchBarItem.view = view; 
    [NSTouchBarItem addSystemTrayItem:touchBarItem]; 
    DFRElementSetControlStripPresenceForIdentifier(identifier, YES); 
    } else { 
    // Fail! 
    } 
} 
+0

Trong khi liên kết này có thể trả lời câu hỏi, tốt hơn nên bao gồm các phần thiết yếu của câu trả lời ở đây và cung cấp liên kết để tham khảo. Câu trả lời chỉ liên kết có thể trở thành không hợp lệ nếu trang được liên kết thay đổi. - [Từ đánh giá] (/ đánh giá/chất lượng thấp-bài viết/17548296) – the4kman

+0

@ the4kman, đoạn mã được thêm vào. –

+0

Cái gì 'DFRSystemModalShowsCloseBoxWhenFrontMost' làm gì? Nó dường như không gây ra hiệu ứng bất kể giá trị bool được cung cấp hoặc sự hiện diện của toàn bộ dòng – ReDetection

Các vấn đề liên quan