标签: mac-catalyst

在AppDelegate中调用buildMenu,但不调用UIViewController

我正在尝试为我的应用程序中的每个视图创建一个自定义菜单,但是看来buildMenu没有在视图控制器中调用。这是一个例子:

在我的AppDelegate中,使用了此代码,该代码可以按预期100%运行。

override func buildMenu(with builder: UIMenuBuilder) {

    print("Updating menu from AppDelegate")

    super.buildMenu(with: builder)

    let command = UIKeyCommand(
        input: "W",
        modifierFlags: [.command],
        action: #selector(self.helloWorld(_:))
    )
    command.title = "Hello"

    builder.insertChild(UIMenu(
        __title: "World",
        image: nil,
        identifier: UIMenu.Identifier(rawValue: "com.hw.hello"),
        options: [],
        children: [command]
    ), atEndOfMenu: .file)
}

@objc private func helloWorld(_ sender: AppDelegate) {

    print("Hello world")
}
Run Code Online (Sandbox Code Playgroud)

但是我需要根据用户在应用程序中的位置来更改菜单中可用的选项,因此我尝试在UIViewController中执行此操作:

override func viewDidAppear(_ animated:Bool){
  // Tried all of these to see if any work
    UIMenuSystem.main.setNeedsRebuild()
    UIMenuSystem.context.setNeedsRebuild()
    UIMenuSystem.main.setNeedsRevalidate()
    UIMenuSystem.context.setNeedsRevalidate() 
}
Run Code Online (Sandbox Code Playgroud)

然后再次..

// This is never called …
Run Code Online (Sandbox Code Playgroud)

ios ios13 mac-catalyst uimenu uimenubuilder

5
推荐指数
1
解决办法
358
查看次数

标签栏 iPad 应用程序到侧边栏 macOS Catalyst 应用程序

我正在努力弄清楚如何将我tabbar基于 iPad 的应用程序变成基于侧边栏导航的Catalyst应用程序。类似于 Apple 显示的屏幕截图:

在此处输入图片说明

您可以在上面的屏幕截图中看到 iPad 应用程序使用tabbar布局,但macOSCatalyst 应用程序使用左侧边栏导航。

我怎样才能做到这一点并将我的 iPad 应用程序转换为使用侧边栏macOS

xcode ios mac-catalyst

5
推荐指数
1
解决办法
344
查看次数

我可以在 Mac Catalyst iOS 应用程序上禁用窗口大小调整功能吗

我正在迁移我的 iOS 应用程序以支持 MacCatalyst,但我想防止用户调整窗口大小。

你有什么建议吗?

macos ios uikitformac mac-catalyst

4
推荐指数
1
解决办法
1918
查看次数

在 mac 催化剂上更改 UITextField 的提示颜色

如何以编程方式更改 mac 催化剂上 UITextField 的提示颜色?

提示存在,但颜色与 UITextField 相同。

提示在 iOS 上显示正确的颜色。

我没有成功尝试.tintColor

代码 + iOS 和 Mac Catalyst 结果

uitextfield ios mac-catalyst

4
推荐指数
1
解决办法
406
查看次数

Mac Catalyst 应用程序:如何在不终止应用程序的情况下关闭窗口?

我正在使用 Mac Catalyst 开发一个应用程序。

当用户关闭 Mac 版本上的窗口时,应用程序将终止。

可以通过使用以下方法来改变 Cocoa 中的这种行为:

applicationShouldTerminateAfterLastWindowClosed
Run Code Online (Sandbox Code Playgroud)

方法或通过在 plist 文件中将 NSSupportsAutomaticTermination 设置为 NO 。

如何在 Mac Catalyst 应用程序中获得相同的效果?

swift mac-catalyst

4
推荐指数
1
解决办法
1925
查看次数

如何检测react-native中的Catalyst模式?

我正在使用react-native 0.62.x

如果react-native在Catalyst中运行(系统是macOS),Platform.OS仍然会是iOS. 有官方的方法可以检测isCatalyst吗?

react-native mac-catalyst

4
推荐指数
1
解决办法
676
查看次数

如何使用 Mac-Catalyst 添加最近的文件

在默认的“文件”菜单中,它有“打开最近的>”菜单项,并且它是自动添加的。目前,如果用户从 Finder 打开关联文件,则会自动添加最近的项目(在 Big Sur 上)。但是如果用户使用 UIDocumentPickerViewController 从我的应用程序打开,它不会添加最近的菜单项。

在此输入图像描述

我想在“打开最近的>”下添加此菜单项并从我的代码中清除项目。有帮助文档或者示例代码吗?谢谢。

swift mac-catalyst

4
推荐指数
1
解决办法
1174
查看次数

为 Mac Catalyst 构建时扩展不可用

目前我有一个 iOS 应用程序,我正在尝试为 Mac Catalyst 构建它,不幸的是,在构建时,我遇到了一些不同目标的以下错误:

为 Mac Catalyst 构建,但嵌入式应用扩展“ShareExtension.appex”是为 iOS 构建的。您可能需要配置“ShareExtension.appex”以构建 Mac Catalyst 或限制应将此应用程序扩展嵌入到目标编辑器中的平台。

当 MacOS 是我构建的平台时,如何禁用共享扩展?

xcode ios mac-catalyst

3
推荐指数
1
解决办法
1504
查看次数

UIDocumentPickerViewController 未在 Mac Catalyst 上调用 didPickDocumentAtURL

我在UIViewController确认以下代码中有此代码UIDocumentPickerDelegate

- (void)openTextFilePicker {
    NSArray *UTIs = [NSArray arrayWithObjects:@"public.text", nil];
    [self openFilePicker:UTIs];
}

- (void)openFilePicker:(NSArray *)UTIs {
    UIDocumentPickerViewController *documentPicker = [[UIDocumentPickerViewController alloc] initWithDocumentTypes:UTIs inMode:UIDocumentPickerModeImport];
    documentPicker.delegate = self;
    documentPicker.popoverPresentationController.barButtonItem = self.importButton;
    [self presentViewController:documentPicker animated:TRUE completion:nil];
}

- (void)documentPicker:(UIDocumentPickerViewController *)controller didPickDocumentAtURLs:(NSArray<NSURL *> *)urls {
    [self documentPicker:controller didPickDocumentAtURL:[urls firstObject]];
}

- (void)documentPicker:(UIDocumentPickerViewController *)controller didPickDocumentAtURL:(NSURL *)url {
    NSLog(@"picked document %@", url);
}

- (void)documentPickerWasCancelled:(UIDocumentPickerViewController *)controller {
    NSLog(@"cancelled");
}
Run Code Online (Sandbox Code Playgroud)

这在 iOS 中运行良好。在 Mac Catalyst 中,文件选择器打开,我可以导航和选择一个文件,但是当我单击选择器中的打开按钮时,既不调用didPickDocumentAtURLs也不didPickDocumentAtURL调用。但是,如果我单击选择器中的取消按钮,documentPickerWasCancelled则会调用。 …

objective-c ios uidocumentpickerviewcontroller mac-catalyst

3
推荐指数
1
解决办法
905
查看次数

如何为 Mac Catalyst 应用程序设置默认/首选窗口大小?

我有一个 iOS 应用程序,我已为其启用了 Catalyst。应用程序中的一项功能会打开一个新窗口。默认情况下,此窗口打开得很大,但我需要一种方法来使其默认变小。我知道您可以设置windowScene.sizeRestrictions?.minimumSize.maximumSize,但这会将窗口限制为我喜欢的大小。我想让窗口打开一定的大小(默认500x800情况下),但用户可以将其扩展到他们想要的任何大小。

我已经window?.frame = CGRect(origin: .zero, size: CGSize(width: 500, height: 800))在 中尝试过SceneDelegate,但没有效果。

视觉示例: 显示我的目标窗口大小与默认窗口大小的图像

macos uikit ios swift mac-catalyst

3
推荐指数
1
解决办法
1795
查看次数