2015-09-29 14 views
9

Điện thoại, lời nhắc và Maps sử dụng Giao diện người dùng 3D Touch khác cho phép chọn một hành động trong một lần. Ví dụ, nhấn mạnh vào lời nhắc và chọn "Nhắc tôi vào một ngày" trong một lần, mà không cần nhả ngón tay. Nó cũng khác với chế độ xem trước chuẩn 3D Touch bằng cách sử dụng API UIViewControllerPreviewing vì nó hiển thị biểu tượng tùy chỉnh cùng với văn bản được căn trái.Cách triển khai 3D-Touch Peek và chọn?

enter image description here

tôi không thể tìm thấy một cách để làm điều này bằng cách sử dụng API chính thức. Tôi đã bỏ lỡ một cái gì đó hoặc là một API tư nhân thực sự?

+0

Vui lòng xem xét đánh dấu câu trả lời của tôi là chính xác để đảm bảo mọi người tìm thấy nguồn có liên quan một cách nhanh chóng. Cảm ơn! –

Trả lời

3

Tôi hỏi câu hỏi của tôi trên Apple Developer Forums như tốt và nhận được trả lời này từ Apple:

Hiện nay không có API công cộng để làm những điều này. Vui lòng gửi báo cáo lỗi nếu đây là điều bạn muốn thực hiện trong ứng dụng của mình và bao gồm chi tiết cụ thể về những gì bạn đang muốn làm.

Vì vậy, hiện tại bạn không thể sử dụng SDK chính thức. Tôi đã nộp số này enhancement request radar và tôi khuyến khích bạn lừa nó nếu bạn cần điều này!

0

Đó là UIPreviewActionItem.

Sau khi ghi đè previewingContext:viewControllerForLocation: bạn cũng có thể ghi đè - (NSArray<id<UIPreviewActionItem>> *)previewActionItems và điều đó sẽ cho phép bạn chỉ định hành động nhanh chóng của mình.

Dưới đây là một đoạn mã đó sẽ giúp bạn ra ngoài: (related tutorial)

- (NSArray<id<UIPreviewActionItem>> *)previewActionItems 
{ 
    UIPreviewAction *action1 = [UIPreviewAction actionWithTitle:@"Action 1" style:UIPreviewActionStyleDefault handler:^(UIPreviewAction * _Nonnull action, UIViewController * _Nonnull previewViewController) { 
     NSLog(@"Action 1 triggered"); 
    }]; 

    UIPreviewAction *action2 = [UIPreviewAction actionWithTitle:@"Destructive Action" style:UIPreviewActionStyleDestructive handler:^(UIPreviewAction * _Nonnull action, UIViewController * _Nonnull previewViewController) { 
     NSLog(@"Destructive Action triggered"); 
    }]; 

    UIPreviewAction *action3 = [UIPreviewAction actionWithTitle:@"Selected Action" style:UIPreviewActionStyleSelected handler:^(UIPreviewAction * _Nonnull action, UIViewController * _Nonnull previewViewController) { 
     NSLog(@"Selected Action triggered"); 
    }]; 

    return @[action1, action2, action3]; 
} 

của Apple Documents:

Khách sạn này là để sử dụng với một bộ điều khiển xem trước (ú) xem mà bạn trình bày trong việc bạn triển khai chế độ xem trước Context: viewControllerForLocation: phương thức ủy quyền ..

Thực hiện phương pháp này để cung cấp các hành động nhanh chóng cho bản xem trước như vậy. Khi người dùng vuốt lên trên bản xem trước, hệ thống sẽ trình bày các mục tác vụ nhanh này trong trang tính bên dưới bản xem trước.

Cách triển khai mặc định của phương thức này trả về một mảng trống.

+1

Vui lòng đọc kỹ câu hỏi. Tôi không đề cập đến các bản xem trước Peek-and-Pop tiêu chuẩn mà là các bản xem trước đặc biệt trong các ứng dụng được đề cập.Các bản xem trước chuẩn không cho phép bạn chọn một hành động mà không cần nhả ngón tay. –

+0

Bạn sẽ sử dụng cách này để soạn thư? Tôi có trong Trình điều khiển xem trước của tôi một phương thức displayComposerSheet chuẩn, nhưng khi tôi nói hành động để làm điều đó, nhà soạn nhạc không bao giờ hiển thị, vì phương thức cho phép nó khởi chạy trong bản xem trước đó và bản xem trước không còn ở đó nữa. – user717452

2

Đối với độc giả trong tương lai, phản hồi từ Apple cho câu hỏi này là:

Hiện nay không có API công cộng để làm những điều này. Vui lòng gửi báo cáo lỗi nếu đây là điều bạn muốn thực hiện trong ứng dụng của mình và bao gồm chi tiết cụ thể về những gì bạn đang muốn làm.

Nguồn: Apple Developer Forum

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