Tôi muốn phát hiện xem người dùng đã bật Giảm độ trong suốt hay chưa. Nó đơn giản bạn chỉ cần gọi func UIAccessibilityIsReduceMotionEnabled()
và nó trả về một Bool
. Nhưng ứng dụng của tôi nhắm vào iOS 7 và 8 và chức năng này không có sẵn trên iOS 7.Kiểm tra xem chức năng có sẵn trong Swift không?
Trong Objective-C, đây là cách tôi đã kiểm tra để xem nếu chức năng tồn tại:
if (UIAccessibilityIsReduceMotionEnabled != NULL) { }
Trong Swift , Tôi không thể tìm ra cách kiểm tra xem nó có tồn tại hay không. Theo this answer, bạn có thể chỉ cần sử dụng chuỗi tùy chọn và nếu đó là nil
thì nó không tồn tại, nhưng điều đó bị hạn chế đối với giao thức Obj-C rõ ràng. Xcode 6.1 không thích điều này:
let reduceMotionDetectionIsAvailable = UIAccessibilityIsReduceMotionEnabled?()
Bạn muốn xóa?. Và tất nhiên nếu bạn làm như vậy nó sẽ sụp đổ trên iOS 7 vì chức năng đó không tồn tại.
Cách thích hợp để kiểm tra xem các loại chức năng này có tồn tại không?
ngoặc sau khi một biểu hiện chức năng gọi hàm. Điều gì sẽ xảy ra nếu bạn bỏ chúng ra? – outis
Nếu bạn rời khỏi() nó nói cùng một điều - xóa?: 'Toán tử của postfix '?' nên có loại tùy chọn; loại là '() -> Bool''. Ngoài ra nếu bạn di chuyển? sau dấu(), tất cả đều là thông báo lỗi tương tự. – Joey
Tôi nghi ngờ nó thực sự chưa có sẵn. Từ sự hiểu biết của tôi, chuỗi tùy chọn được sử dụng cho các biến lớp. 'UIAccessibilityIsReduceMotionEnabled' giống như hàm tĩnh – Peter