2017-02-15 43 views
1

我有一個標準UIViewController並註冊了一個UISwipeGestureRecognizer,委託在我的viewDidLoad重寫視圖。在語音中註冊UIGestureRecognizer操作

手勢會正確註冊並調用適當的操作,但是當語音覆蓋打開時不會發生這種情況。

UIGestureRecognizer僅適用於iOS的標準用法?有沒有辦法得到聲音註冊這些手勢,無論是雙擊,刷卡,捏/變焦等

+0

好問題!我猜不是,因爲手勢是*身體*,而不是聲音。但我有興趣找出是否有人有更具建設性的東西.... – dfd

+0

看到這個鏈接希望它會幫助你https://www.apple.com/voiceover/info/guide/_1137.html –

回答

0

想通了這是如何工作的,我認爲這是值得分享的:

在UIView的類東張西望,以及UIAccessibilityTraits後,所有UIViews及其子類必須使用各種UIAccessibilityTraits位掩碼可以用來: - 設計UIView或採用UIAccessibility協議的任何類的標準行爲。 - 允許不同的配置,如刷新速度,使滑塊型行爲等

下面是所有可用的性狀的鏈接: https://developer.apple.com/reference/uikit/uiaccessibility/accessibility_traits

對於我的具體情況,我用UIAccessibilityTraitAllowsDirectInteraction和UIAccessibilityTraitUpdatesFrequently。然後,所有UIGestureRecognizers正確註冊,不論是刷卡,水龍頭,捏等

他們需要被指定爲一個位掩碼,所以如果你需要一個元素具有這些屬性,類型:

myView.UIAccessibilityTraits = UIAccessibilityTraitAllowsDirectInteraction | UIAccessibilityTraitUpdates常見的

編譯後,運行應用程序,我得到了視圖,告訴我它是什麼,並在沒有出現錯誤時獲得的「bonk」聲音的情況下正確地刷新註冊表。

希望這可以幫助那些也想知道如何讓它工作的人,但這也可能會與自定義視圖稍有衝突,具體取決於您希望視力受損或視覺受損的用戶如何體驗UI。然而,我發現這種方式比創建一整套UIElements更加優雅,只是爲了適應語音使用,因爲交互方法保持不變,並且不需要編寫代碼來提示或解釋做什麼。