- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的应用程序支持英语和阿拉伯语。 interactivePopGestureRecognizer
在使用英语时可以正常工作,即从左向右滑动时,它会弹出 viewController。但是当我使用阿拉伯语时,我已将 semanticContentAttribute
从右更改为左。
if([[[NSUserDefaults standardUserDefaults] objectForKey:@"LanguageCode"] isEqualToString:@"en"])
{
[[UIView appearance] setSemanticContentAttribute:UISemanticContentAttributeForceLeftToRight]; //View for English language
}
else
{
[[UIView appearance] setSemanticContentAttribute:UISemanticContentAttributeForceRightToLeft]; //mirror view for Arabic language
}
但是interactivePopGestureRecogniser
仍然是从左到右。如何更改 interactivePopGestureRecogniser
的方向以使其支持阿拉伯语?我想使用阿拉伯语从右向左滑动到弹出 View Controller 。
最佳答案
如果有人寻求的话,我经过长时间的搜索找到了解决方案。
之前的答案可能会导致 UI 挂起/卡住。
UI 卡住/挂起的原因是,当在 Root View 上执行手势时,UINavigationController 缺少对 Root View Controller 的检查。有几种方法可以解决这个问题,以下是我所做的。
您应该子类化 UINavigationController,这是正确的方法并添加实现,如下所示:
class RTLNavController: UINavigationController, UINavigationControllerDelegate, UIGestureRecognizerDelegate {
override func viewDidLoad() {
super.viewDidLoad()
// Adding swipe to pop viewController
self.interactivePopGestureRecognizer?.isEnabled = true
self.interactivePopGestureRecognizer?.delegate = self
// UINavigationControllerDelegate
self.delegate = self
}
func navigationController(_ navigationController: UINavigationController, willShow viewController: UIViewController, animated: Bool) {
navigationController.view.semanticContentAttribute = UIView.isRightToLeft() ? .forceRightToLeft : .forceLeftToRight
navigationController.navigationBar.semanticContentAttribute = UIView.isRightToLeft() ? .forceRightToLeft : .forceLeftToRight
}
// Checking if the viewController is last, if not disable the gesture
func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool {
if self.viewControllers.count > 1 {
return true
}
return false
}
}
extension UIView {
static func isRightToLeft() -> Bool {
return UIView.appearance().semanticContentAttribute == .forceRightToLeft
}
}
资源:
原始问题:
答案用于解决方案:
其他可能效果更好的解决方案(但它是在 Objective-C 中):
关于ios - 更改 InteractivePopGestureRecognizer 方向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47525211/
默认的 interactivePopGestureRecognizer 仅当您在屏幕的左边缘从左向右滑动时才有效。我希望能够通过在屏幕上的任意位置滑动来执行此手势。 Reddit、Slack 和 Tw
在我的应用程序中,我有不同的 Controller 。当我将 controller1 推到导航 Controller 并向后滑动时,一切正常。但是,如果我将导航 controller1 插入 cont
我有一个嵌套在 UINavigationController 中的 View Controller . 我已经实现了 iOS 7 interactivePopGestureRecognizer 以使用
我想知道如何使用可见键盘滑动 ViewController? 在 iOS 7 中,我可以左右滑动 ViewController,但键盘保持不动。 简而言之,我想进入以下状态: 谢谢! 最佳答案 更新:
我的应用左下角有这个自定义后退按钮。当导航堆栈上没有更多的 View Controller 然后只有 Root View Controller 时,按钮向下过渡。现在我介绍了 iOS7 标准的“滑动弹
我的应用程序支持英语和阿拉伯语。 interactivePopGestureRecognizer 在使用英语时可以正常工作,即从左向右滑动时,它会弹出 viewController。但是当我使用阿拉伯
我已经实现了interactivePopGestureRecognizer。它过渡到上一页。但问题是,当转换发生时,如果当前 View Controller 中有一个 UIScrollView,它就会
我有一个 UIScrollView,其框架与包含的 View Controller 相同。 当 ScrollView 的缩放比例大于 1 时,从屏幕左侧 50% 开始从左向右滑动会导致 interac
我在同一个 UINavigationController 上有两个不同的 UIViewControllers。两者都包含一个 tableview。如果第一个 View Controller 上的一个单
在我的 UINavigationController 中,我检查它是否具有属性 interactivePopGestureRecognizer,然后再这样设置: class UINavigationC
我有一个自定义控件,包含一行按钮,模仿标签栏。此控件在 UINavigationController 离开 Root View Controller 时滑出 View ,并在导航到 Root View
我有一个被推送到导航堆栈的 UIViewController。我想扩展标准的 iOS7 交互式平移手势以将此 View Controller 弹出到默认 UIRectEdgeLeft 边界之外,以便用
我有像这张照片这样的屏幕。 HomeViewController 将推送到 maintabbar,一个 tabbar item 将推送到 detailScreen。为什么向后滑动不起作用。我认为这是I
我有一个应用程序,我需要在其中禁用 interactivePopGestureRecognizer,这样我的自定义幻灯片菜单就不会显示。我想我可能已经尝试了 SO 中提到的所有内容,但没有运气。我的
我需要在我的应用程序中禁用 interactivePopGestureRecognizer,我做到了 - (void)viewDidAppear:(BOOL)animated { [super
我正在尝试实现自定义 id 将一个特定的 View Controller 推送到导航 Controller 的导航堆栈时的对象。 但是,我发现这样做会阻止 UINavigation Controlle
如何检测我的 interactivePopGestureRecognizer 是否已完成并将返回(弹出)到先前的 View Controller 或 shift 是否不够。然后当前 View Cont
是否有一个干净的解决方案可以让 View Controller 上的回调或事件被 interactivePopGestureRecognizer 关闭(弹出)? 为了清楚起见,在该手势识别器弹出 Co
我的第一个问题,请温柔... 如果我使用 UIPageViewControllerTransitionStylePageCurl,但不能使用 UIPageViewControllerTransitio
我使用 UINavigationController 的默认实现和从左到右弹出的默认手势 (interactivePopGestureRecognizer)。我怎样才能让 interactivePop
我是一名优秀的程序员,十分优秀!