Apple watch 如何禁用watchOS界面控制器的取消按钮的用户交互?

Apple watch 如何禁用watchOS界面控制器的取消按钮的用户交互?,apple-watch,watchos,wkinterfacecontroller,Apple Watch,Watchos,Wkinterfacecontroller,在我的Apple Watch应用程序中,我的一个界面控制器在左上角有一个取消按钮。在我的例子中,一旦一个特定的操作完成,我不希望用户返回到上一个屏幕,所以我想禁用该取消按钮的用户交互。即使我将标题更改为空字符串,用户交互仍保持启用状态。您不能为“后退”按钮禁用用户交互 但是你可以稍微改变一下你表达观点的方式来实现你想要的 从你的正常视角开始。检查是否需要向用户显示登录名。如果您这样做了,那么以模态的方式呈现登录视图。登录结束时,您关闭模式视图,回到正常视图,没有不必要的后退按钮。我们无法禁用后退

在我的Apple Watch应用程序中,我的一个界面控制器在左上角有一个取消按钮。在我的例子中,一旦一个特定的操作完成,我不希望用户返回到上一个屏幕,所以我想禁用该取消按钮的用户交互。即使我将标题更改为空字符串,用户交互仍保持启用状态。

您不能为“后退”按钮禁用用户交互

但是你可以稍微改变一下你表达观点的方式来实现你想要的


从你的正常视角开始。检查是否需要向用户显示登录名。如果您这样做了,那么以模态的方式呈现登录视图。登录结束时,您关闭模式视图,回到正常视图,没有不必要的后退按钮。

我们无法禁用后退/取消按钮用户操作,但可以加载控制器,而无需取消按钮

presentControllerWithName("NewInterfaceController", context: nil)
presentControllerWithName这将向控制器显示取消按钮。如果我们像下面这样使用,将不会得到取消按钮

WKInterfaceController.reloadRootControllersWithNames(["NewInterfaceController"], contexts: ["NewInterfaceController"])
重新加载名为的RootControllers这将使我们的控制器成为根控制器,因此我们不会得到“取消”按钮。这就是我解决问题的方式。希望它也能帮助你

注意:这里[]是语法。exp:[“NewInterfaceController”]

这在watchOS 7/Swift 5中

以模态方式呈现新控制器:

presentController(withName: "NewInterfaceController", context: nil)
通过替换根控制器来显示新控制器:

WKInterfaceController.reloadRootControllers(
    withNamesAndContexts: [
        (
            name: "NewInterfaceController",
            context: "NewInterfaceController" as AnyObject
        )
    ]
)

然后当登录屏幕可见时,用户可以退出并查看我的实际控制器,对吗?我想这对我不管用@pteofilI可以继续找到解决方案,但我认为主要的问题是,登录手表并不是手表设计用户案例的一部分。在iPhone应用程序上,你要做的是告诉用户需要登录才能使用该应用程序和一个按钮登录。如果用户点击“登录”,您会以模式显示登录视图,然后当您关闭该视图时,您会使用新内容为登录用户更新视图。基本上,我正在处理业务应用程序,因此在apple watch中提供登录,您所说的对iphone应用程序来说是正确的。但在watch应用程序中,用户不应该看到登录或实际内容屏幕的第一个屏幕。如果你发现了什么,请和我分享@pteofil'ReloadRootController'在watchOS 4.0中被弃用:使用带名称的ReloadRootPageControllers。也似乎不工作了,因为我仍然看到取消按钮。。。