2014-07-03 16 views
22

CHỈNH SỬA: tl; dr - có thể, xem câu trả lời được chấp nhận bên dưới.Tôi có thể tắt bàn phím tùy chỉnh (iOS8) cho ứng dụng của mình không?

Có cách nào (không chỉ có chương trình) ngăn ngừa bàn phím tùy chỉnh (iOS8) không được sử dụng cho ứng dụng của tôi không? Tôi chủ yếu quan tâm đến cài đặt "mỗi ứng dụng", do đó, chỉ ứng dụng của tôi không được phép sử dụng bàn phím tùy chỉnh, nhưng vô hiệu hóa bàn phím tùy chỉnh trên toàn hệ thống là phương sách cuối cùng.

Cho đến nay tôi biết rằng bàn phím tùy chỉnh là toàn hệ thống và có thể được sử dụng bởi bất kỳ ứng dụng nào. Hệ điều hành sẽ dự phòng bàn phím chứng khoán chỉ dành cho mục nhập văn bản an toàn (các trường văn bản có secureTextEntry được đặt thành YES). Không có nhiều hy vọng ở đây.

Tôi có ấn tượng từ App Extension Programming Guide MDM (Quản lý thiết bị di động) có thể hạn chế thiết bị sử dụng bàn phím tùy chỉnh, nhưng tôi không tìm thấy tùy chọn đó trong phiên bản beta mới Apple Configurator.app dành cho OS X Yosemite. 'Cấu hình' có thiếu tùy chọn đó không?

Mọi ý tưởng ở đây? Tôi có nên nộp một radar để đề xuất rằng Apple nên giới thiệu chức năng như vậy?

+2

Nếu một người dùng muốn sử dụng một bàn phím tùy chỉnh, bạn là ai để ngăn chặn chúng? –

+2

@FilipRadelic: lý do bảo mật (ứng dụng doanh nghiệp). – matm

+1

@matm - AFAIK bạn không thể làm điều đó. Bàn phím tùy chỉnh "thay thế" bàn phím hệ thống trên cơ sở toàn hệ thống. Điều duy nhất bạn có thể làm từ góc độ doanh nghiệp là a) không cho phép cài đặt ứng dụng trên App Store hoặc b) thực hiện một số hành động nếu ai đó đã cài đặt ứng dụng bao gồm bàn phím tùy chỉnh. Nhưng a) khó thực hiện trong BYOD và b) khó tìm ... Apple mở cửa cho radar (có thể cho iOS9) sau đó. – muenzpraeger

Trả lời

46

Hình như bạn có những gì bạn muốn trong phiên bản beta hạt 3. Đường dây 440 của UIApplication.h:

// Applications may reject specific types of extensions based on the extension point identifier. 
// Constants representing common extension point identifiers are provided further down. 
// If unimplemented, the default behavior is to allow the extension point identifier. 
- (BOOL)application:(UIApplication *)application shouldAllowExtensionPointIdentifier:(NSString *)extensionPointIdentifier NS_AVAILABLE_IOS(8_0); 

Nó không được đưa vào các tài liệu, nhưng vẻ như nó sẽ làm chính xác những gì bạn hỏi ở đây.

Tôi đoán những "định điểm mở rộng" không phải là định danh duy nhất của phần mở rộng, nhưng các loại của họ, như còn đây là trên đường dây 545:

// Extension point identifier constants 
UIKIT_EXTERN NSString *const UIApplicationKeyboardExtensionPointIdentifier NS_AVAILABLE_IOS(8_0); 

TLDR: để vô hiệu hóa bàn phím tùy chỉnh bạn sẽ bao gồm nội dung như thế này trong đại diện ứng dụng của mình:

- (BOOL)application:(UIApplication *)application shouldAllowExtensionPointIdentifier:(NSString *)extensionPointIdentifier { 
    if ([extensionPointIdentifier isEqualToString: UIApplicationKeyboardExtensionPointIdentifier]) { 
     return NO; 
    } 
    return YES; 
} 
+0

Đây là tin tuyệt vời! Tôi đã đi qua API diffs ngày hôm nay và có thêm một lý do để làm điều đó :) Cảm ơn bạn đã chia sẻ! – matm

+0

Nó hoạt động! Cảm ơn rất nhiều. – echo

+0

Nó hoạt động tuyệt vời! cảm ơn! – xlsmearlx

3

Tôi chỉ muốn thêm điều này cho những nhà phát triển muốn triển khai phương pháp này trong Xamarin iOS. Ý tưởng là để ghi đè lên các phương pháp ShouldAllowExtensionPointIdentifier trong bạn AppDelegate:

public override bool ShouldAllowExtensionPointIdentifier(UIApplication application, NSString extensionPointIdentifier) 
{ 
    if (extensionPointIdentifier == UIExtensionPointIdentifier.Keyboard) 
    {   
     return false; 
    } 
    return true; 
} 
7

Swift 3:

func application(_ application: UIApplication, shouldAllowExtensionPointIdentifier extensionPointIdentifier: UIApplicationExtensionPointIdentifier) -> Bool { 
    if extensionPointIdentifier == UIApplicationExtensionPointIdentifier.keyboard { 
     return false 
    } 
    return true 
} 
Các vấn đề liên quan