标签: mac-catalyst

SwiftUI 和 Catalyst:[API] 无法将处理程序从 3 添加到 3 - 删除

将 SwiftUI 项目转换为 Catalyst 后,我​​在控制台上收到以下奇怪的错误消息:

[API] 无法将处理程序从 3 添加到 3 - 删除

当视图滚动时,即使在发布模式下,也会发生这种情况,而且发生的次数很多,可能是每一帧。似乎整个日志记录都会减慢应用程序的速度。

抱歉,我说得太不具体了,我只是不知道从哪里开始。(当然除了提交错误)

有人有类似的经历吗?何时何地?也许有解决方法吗?

苹果论坛上有一个帖子,根本没有解决问题:

https://developer.apple.com/forums/thread/719267

我在这里和谷歌都没有找到任何东西。

Xcode 是 14.2 macOS 13.2.1

macos swift swiftui mac-catalyst

25
推荐指数
0
解决办法
1741
查看次数

如何为使用 Mac Catalyst 移植到 Mac 的 iPad 应用程序设置“帮助”菜单选项?

默认情况下,Mac Catalyst 创建一个标题为“帮助”的菜单,该菜单应该包含应用程序的帮助。但是,我没有找到有关如何实施帮助的文档。对于标准 Mac 应用程序,您可以使用帮助手册。但是,没有提及如何使用 Mac Catalyst 的帮助手册。我试图将 HelpBookDirectoryName 添加到 info.plist 但这不起作用。有没有办法让帮助书与 Mac Catalyst 一起使用?

macos ios mac-catalyst

16
推荐指数
2
解决办法
1186
查看次数

EXC_BAD_INSTRUCTION 来自 com.apple.xpc.activity.com.apple.cloudkit.scheduler.com.apple.coredata.cloudkit.activity.export

我有一个在 iOS 上运行良好的应用程序,但是当使用催化剂运行时,如果我在 macOS 上滑动到另一个虚拟桌面,然后返回大约 10 次,它会间歇性地让我崩溃。它主要发生在 UICollectionViewController 上

这是回溯:

(lldb) bt
* thread #5, queue = 'com.apple.xpc.activity.com.apple.cloudkit.scheduler.com.apple.coredata.cloudkit.activity.export', stop reason = EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)
  * frame #0: 0x00007fff68c373ae libxpc.dylib`___xpc_activity_dispatch_block_invoke.107.cold.3 + 19
    frame #1: 0x00007fff68c1ecdb libxpc.dylib`___xpc_activity_dispatch_block_invoke.107 + 746
    frame #2: 0x00000001010377b3 libdispatch.dylib`_dispatch_call_block_and_release + 12
    frame #3: 0x000000010103878f libdispatch.dylib`_dispatch_client_callout + 8
    frame #4: 0x000000010103fd31 libdispatch.dylib`_dispatch_lane_serial_drain + 777
    frame #5: 0x0000000101040ae8 libdispatch.dylib`_dispatch_lane_invoke + 438
    frame #6: 0x000000010104df2e libdispatch.dylib`_dispatch_workloop_worker_thread + 681
    frame #7: 0x00000001010c4053 libsystem_pthread.dylib`_pthread_wqthread + 290
    frame #8: 0x00000001010c3eb3 libsystem_pthread.dylib`start_wqthread + 15
(lldb) …
Run Code Online (Sandbox Code Playgroud)

ios swift cloudkit mac-catalyst

12
推荐指数
1
解决办法
424
查看次数

如何在“UIKit for Mac”平台上使用 SwiftUI 打开文件对话框?

NSOpenPanel 在“UIKit for Mac”平台上不可用:https : //developer.apple.com/documentation/appkit/nsopenpanel

如果 Apple 不提供内置方式,我猜有人会基于 SwiftUI 和FileManager创建一个库,该库显示选择文件的对话框。

macos swift swiftui uikitformac mac-catalyst

11
推荐指数
2
解决办法
1万
查看次数

Mac Catalyst 问题 - 在为 iOS 模拟器构建的目标文件中链接

我正在尝试使用新的 Mac Catalyst 在我的 Mac 上构建我的 iOS/iPadOS 项目。当我在 iPhone 模拟器上构建它时一切正常,但是当我在 Mac 上构建它时,出现此错误。

in /Users/nevin/Documents/[projectName]/Pods/Crashlytics/iOS/Crashlytics.framework/Crashlytics(CLSInternalReport.o), building for Mac Catalyst, but linking in object file built for iOS Simulator, file '/Users/nevin/Documents/[projectName]/Pods/Crashlytics/iOS/Crashlytics.framework/Crashlytics' for architecture x86_64
Run Code Online (Sandbox Code Playgroud)

多个 Pod 会发生这种情况,因此,例如,如果我删除 Crashlytics,另一个 Pod 会出现类似的错误。有人知道这是 Crashlytics 需要解决的问题还是我可以在我的项目中解决的问题?

ios swift mac-catalyst

11
推荐指数
1
解决办法
5776
查看次数

UIDocumentPickerViewController in SwiftUI on mac (macCatalyst)

所以我一直在干预将一个小型 SwiftUI iPad 应用程序“移动”到 Mac,并且我在使用UIDocumentPickerViewController. 我已经包裹UIDocumentPickerViewController在一个UIViewControllerRepresentable像这样:

struct DocumentPickerView: UIViewControllerRepresentable {
  func makeUIViewController(context: Context) -> UIDocumentPickerViewController {
    let documentPicker = UIDocumentPickerViewController(documentTypes: [(kUTTypeImage as String)], in: .import)
    return documentPicker
  }

  func updateUIViewController(_ uiViewController: UIDocumentPickerViewController, context: Context) {

  }
}
Run Code Online (Sandbox Code Playgroud)

并像这样显示它:

struct ContentView: View {
@State var shows = false
var body: some View {
    Button(action: { self.shows.toggle() }) {
        Text("Select File")
    }
    .sheet(isPresented: self.$shows) {
        DocumentPickerView()
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

在 iPad 上一切正常, iPad

但是当在 Mac 上时,UIDocumentPickerViewController …

macos ios swift swiftui mac-catalyst

11
推荐指数
1
解决办法
2764
查看次数

Mac 上的 DatePicker 不保存日期,直到按下返回键

我正在使用 Mac Catalyst 将我的 iPad 应用程序调整到 Mac,并且在使用 datePicker 时遇到了问题(它有一段datePickerMode时间)。在 iPad 上 datePicker 是一个轮子,每当用户在日期选择器上滚动时,就会触发 dateChanged 操作。但在 Mac 上,日期选择器不是滚动条,而是一种文本输入。我可以在 Mac 上键入和更改所有时间值,但在按下返回键之前不会触发 dateChanged 操作。

我想在用户进入某个时间时触发 dateChange 操作。我怎样才能做到这一点?我尝试向 datePicker 添加不同的目标,但没有任何效果。

我实际上更喜欢在 Mac 上使用日期滚动条,所以如果有人知道如何做到这一点,我将不胜感激(我在互联网上四处寻找,但一无所获)!

这是我的代码:

class DateVC: UIViewController {
     @IBOutlet weak var datePicker: UIDatePicker!

     override func viewDidLoad() {
          super.viewDidLoad()

          //Just show the time
          datePicker.datePickerMode = .time
    }

     //Action connected to datePicker. This is not called until I press enter on Mac
     @IBAction func datePickerChanged(_ sender: Any) {
        //do actions
     }

}
Run Code Online (Sandbox Code Playgroud)

macos datepicker swift mac-catalyst

11
推荐指数
1
解决办法
972
查看次数

在 Mac Catalyst 中打开一个新窗口

我正在使用 Mac Catalyst 移植 iPad 应用程序。我正在尝试在新窗口中打开一个视图控制器。

如果我严格使用 AppKit,我可以像这篇文章中描述的那样做一些事情。但是,由于我使用的是 UIKit,因此没有showWindow()可用的方法。

这篇文章指出,这可以通过在项目的新包中添加 AppKit 来实现(我这样做了),但是它没有解释如何实际呈现新窗口的具体细节。它读...

你不能完全做的另一件事是NSWindow用 UIKit 视图层次结构生成一个新的。然而,你的 UIKit 代码有能力产生一个新的窗口场景,你的 AppKit 代码有能力获取它所呈现的结果 NSWindow 并劫持它来做任何你想做的事情,所以从这个意义上说你可以产生 UIKit 窗口用于辅助调色板和各种其他功能。

任何人都知道如何实现本文中解释的内容?

TL;DR:如何使用 Mac Catalyst打开UIViewController一个新的单独文件NSWindow

macos uikit appkit ios mac-catalyst

10
推荐指数
2
解决办法
3131
查看次数

VPN 在 Mac Catalyst 上不起作用 Catalyst SecKeychainItemCopyContent 返回 无法检索此项目的内容

我正在尝试使用 Mac Catalyst 在 Mac OS 平台上运行我的 VPN iOS 应用程序。

我的代码适用于 iOS 应用程序,但不知何故它不适用于 Mac OS。

VPN 未连接。但似乎可以在 Mac Catalina 上的系统偏好设置中的网络中使用。

它还包含我们的 VPN 连接信息,例如服务器名称、密码。这些都对。在钥匙串中,我会看到 psk 和密码。据我所知,psk 是一个共享密钥。但是如果我点击从网络部分连接,我会遇到没有提供共享密钥的错误。但实际上它存储在钥匙串访问中。

我的连接类型是 IPSec。

在 Xcode 中点击连接 VPN 按钮后,我会看到

复制内容失败,返回 SecKeychainItemCopyContent 无法检索此项目的内容错误<在控制台中

我把我的连接部分放在这里。但为了提醒我的代码在 iOS 应用程序上没有任何错误。相同的代码也不适用于 Mac OS。那就是问题所在。

任何帮助都会很棒!

public func connectIKEv2(config: Configuration, onError: @escaping (String)->Void) {
        let p = NEVPNProtocolIPSec()
        if config.pskEnabled {
            p.authenticationMethod = NEVPNIKEAuthenticationMethod.sharedSecret
        } else {
            p.authenticationMethod = NEVPNIKEAuthenticationMethod.none
        }
        p.serverAddress = config.server
        p.disconnectOnSleep = false
        p.username = config.account
        p.passwordReference = config.getPasswordRef()
        p.sharedSecretReference …
Run Code Online (Sandbox Code Playgroud)

vpn xcode keychain swift mac-catalyst

10
推荐指数
0
解决办法
400
查看次数

Mac Catalyst:tableView 允许多选不起作用

我有一个允许多选的tableview。我已经在 viewDidLoad 中将 allowedMultipleSelection 和 allowedMultipleSelectionDuringEditing 设置为 true ,这在 iOS 和 iPadOS 上都可以完美运行。我决定今天试用 Catalyst,该应用程序看起来不错,只是我无法在此视图中选择多行。有任何想法吗?这是下面的代码。提前谢谢了。

//允许多选

override func viewDidLoad() 
{
    super.viewDidLoad()

    self.tableView.allowsMultipleSelection = true
    self.tableView.allowsMultipleSelectionDuringEditing = true
.....
}
Run Code Online (Sandbox Code Playgroud)

//限制选择为7行

override func tableView(_ tableView: UITableView, willSelectRowAt indexPath: IndexPath) -> IndexPath? {
    if let selectedItems = tableView.indexPathsForSelectedRows {

        if selectedItems.count > 6 {
            return nil
        }
    }
    return indexPath
}

@IBAction func doneButtonTapped(_ sender: UIBarButtonItem) {

...

    let selectedIndexPaths = tableView.indexPathsForSelectedRows
    if !selectedIndexPaths!.isEmpty {
        for index in selectedIndexPaths! {
            let selectedProcedure = …
Run Code Online (Sandbox Code Playgroud)

swift mac-catalyst

10
推荐指数
2
解决办法
1003
查看次数

标签 统计

mac-catalyst ×10

swift ×8

macos ×6

ios ×5

swiftui ×3

appkit ×1

cloudkit ×1

datepicker ×1

keychain ×1

uikit ×1

uikitformac ×1

vpn ×1

xcode ×1