所以我有一個導航控制器在我爲iOS 7應用程序構建。 titleView是可見的,以及後退按鈕和導航欄的自我。出於某種原因,交互式彈出手勢(從左邊滑動)不起作用。什麼都沒發生。當我登錄手勢時,它不是零。有什麼特別的我必須做,以啓用此功能?什麼可能導致它不工作?UINavigationController交互式流行手勢不起作用?
回答
嗯,貌似我不得不設置的動作代表和實現以下:
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
return YES;
}
你可以把該線路viewDidLoad中方法。
self.navigationController.interactivePopGestureRecognizer.delegate = (id<UIGestureRecognizerDelegate>)self;
爲我工作..謝謝 – Simmy
更摸索出的答案是使亞倫和lojals
首先自定義導航控制器,然後把這個代碼的類
在viewDidLoad中,就把這行:
self.navigationController.interactivePopGestureRecognizer.delegate = (id<UIGestureRecognizerDelegate>)self;
而且在類寫這個功能
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer { return YES;}
我已經找到了th在使用自定義後退按鈕時,交互式彈出手勢停止工作(我認爲蘋果公司無法預見您的自定義後退按鈕的行爲方式,因此他們會禁用該手勢)。
要解決此問題,如前面提到的其他問題,可以將interactivePopGestureRecognizer.delegate
屬性設置爲nil
。
在斯威夫特,這可以很容易地通過添加擴展整個應用程序做了:UINavigationController
這樣
extension UINavigationController {
override public func viewDidLoad() {
super.viewDidLoad()
interactivePopGestureRecognizer?.delegate = nil
}
}
更新答案
好像委託設置爲nil
原因在某些情況下(例如,用戶在導航堆棧的頂部視圖控制器上向左或向右滑動時)應用UI被凍結。
因爲gestureRecognizerShouldBegin
委託方法不能在擴展處理,繼承UINavigationController
似乎是最好的解決辦法:和
class NavigationController: UINavigationController, UIGestureRecognizerDelegate {
/// Custom back buttons disable the interactive pop animation
/// To enable it back we set the recognizer to `self`
override func viewDidLoad() {
super.viewDidLoad()
interactivePopGestureRecognizer?.delegate = self
}
func gestureRecognizerShouldBegin(gestureRecognizer: UIGestureRecognizer) -> Bool {
return viewControllers.count > 1
}
}
這似乎工作,但事實證明,在某些情況下,它凍結了應用程序。我認爲這是在推送視圖控制器時觸發交互式彈出手勢時發生的。更安全的方法是將子類UINavigationController。在子類中,將'interactivePopGestureRecognizer.delegate'設置爲self,並防止在推送新視圖控制器時識別交互式彈出手勢。 – joern
事實上,我也發現這個問題,似乎隻影響導航控制器堆棧的頂視圖控制器。我已經用基於子類的不同解決方案更新了我的答案。 –
@Eneko Alonso完美!就像你所說的,如果用戶向左或向右滑動,然後點擊一個按鈕 - 推視圖控制器會出現故障。子類化修復了這個問題100% – Alex
- 1. UINavigationController - 獲取交互式流行手勢識別器進度
- 2. 取消互動的UINavigationController流行手勢不叫UINavigationControllerDelegate方法
- 3. 點按手勢不起作用。啓用用戶交互。
- 4. 在iOS中使用手指手勢進行交互式視頻
- 5. EGOPhotoViewer:手勢不起作用
- 6. Matplotlib交互式環境不起作用
- 7. Windows git bash交互式不起作用?
- 8. 手勢重構器不起作用
- 9. Android手勢onFling不起作用
- 10. 點擊手勢與UIGestureRecognizerState不起作用
- 11. 點擊手勢不起作用
- 12. ios7中的手勢不起作用
- 13. wp7 xna手勢不起作用
- 14. 點按手勢不起作用
- 15. Android滑動手勢不起作用
- 16. UINavigationController不起作用
- 17. UITabBarController和UINavigationController交互
- 18. UITextView用戶交互不起作用
- 19. SQL C#交互不起作用
- 20. JWplayer Javascript交互不起作用
- 21. Visual Studio交互命令不起作用
- 22. 禁用用戶交互但在UIViewController中允許點按手勢
- 23. java Runtime.exec運行交互式shell掛起
- 24. 交互式流行手勢識別器阻止按鈕在自定義uitableviewcell中的touchupinside事件
- 25. MonoDroid/MonoDevelop:交互式調試器不起作用
- 26. 在Windows上的Git的bash:交互模式不起作用
- 27. 如果--abort不起作用,如何中止交互式底圖?
- 28. 爲什麼手勢/操作不起作用Windows 10 UWP
- 29. 的UIImageView用戶交互,但仍挖掘手勢識別
- 30. List.Contains在通過foreach循環進行交互時不起作用
伊夫檢查這一點,但令人毛骨悚然的問題,當我有這個固定的,那麼如果用戶滑動一半然後回來看看下一個控制器重疊在前一個視圖控制器上。我看到前一個視圖控制器,下一個重疊像透明玻璃一樣透明。所以用戶恰好被鎖定了這個狀態。任何想法。這是View確實出現/將出現處理問題。 –