标签: mac-catalyst

在Mac版UIKit(Catalyst)中检测单个修改键更改

我正在使用Mac的UIKit(也称为Mac的iPad AppsProject Catalyst)在MacOS上移植iOS应用。

该应用使用keyCommandsfromUIKit来检测单个修饰键的按下:

UIKeyCommand(input: "", modifierFlags: .shift, action: #selector(singleShift))
Run Code Online (Sandbox Code Playgroud)

这段代码可在带有外部键盘的iPad上完美运行,我会触发每个事件吗?按。但是,这在MacOS上不起作用,尽管单个非修饰符事件和修饰符+非修饰符组合起作用。

如何实现所需的行为并获得有关单个修饰键事件的通知?

还是我应该放弃UIKeyCommand并尝试UIGestureRecognizer

macos ios swift uikitformac mac-catalyst

7
推荐指数
1
解决办法
150
查看次数

如何检测 Mac Catalyst 中的窗口大小调整?

如何在用户调整窗口大小时收到通知:

 NotificationCenter.default.addObserver(self, selector: #selector(function), name: NSWindowDidResizeNotification, object: nil)
Run Code Online (Sandbox Code Playgroud)

在 Mac Catalyst 中不可用

uiwindow swift mac-catalyst

7
推荐指数
1
解决办法
1416
查看次数

如何在 Catalyst 应用程序中将搜索栏放入 NSToolbar?

我已经看到一些 Catalyst 应用程序向 NSToolbar 添加了一个搜索栏,我想知道我如何才能做到这一点。我是否必须导入 AppKit/Cocoa 才能获得 NSSearchField 和实际的 NSToolbar?或者我没有看到 UISearchBars 有什么方法吗?任何帮助都会很棒,谢谢。

我曾尝试导入 AppKit 和 Cocoa(使用捆绑加载器),但我认为我做得不对。如果有人有关于如何执行此操作的可靠指南,请链接它。

我还尝试使用 UISearchBar 的自定义视图创建 UIBarButtonItem,它最终不会呈现任何内容。(可以在下面找到)

这是在 itemIdentifier.rawValue 的 switch case 中找到的(在工具栏 itemForIdentifier 函数中)

let search = UISearchBar()
search.sizeToFit()
let button = UIBarButtonItem(customView: search)
button.width = 100
let toolbarItem = NSToolbarItem(itemIdentifier: itemIdentifier, barButtonItem: button)
toolbarItem.isBordered = true
toolbarItem.isEnabled = true
return toolbarItem
Run Code Online (Sandbox Code Playgroud)

macos swift uikitformac mac-catalyst

7
推荐指数
1
解决办法
1800
查看次数

UISearchController/UISearchBar 在 macOS 下的行为与 iOS 不同

我有一个带有标准 UISearchBar 的标准 UISearchController。搜索栏显示在导航栏中。在 iOS/iPadOS 上一切正常。但是搜索栏在 macOS 下的行为有所不同。

在 iOS 下,当您点击搜索栏时,该图标仅在搜索栏中出现文本时才会出现。没有文字时不显示。如果您点击该图标,则会删除搜索栏中的文本。到目前为止一切都很好。

但是在 macOS 下,无论搜索栏是否有文字,图标都会立即出现并保持可见。更糟糕的是,当您单击该图标时,不仅会从搜索栏中删除文本,还会取消整个搜索控制器。就像单击了取消按钮一样。实际上,该UISearchBarDelegate方法searchBarCancelButtonClicked是在单击图标时调用的(但在 iOS 中不会)。

作为参考,这里是viewDidLoad演示问题的简单视图控制器的方法中的相关代码:

navigationItem.rightBarButtonItem = editButtonItem

let results = UITableViewController(style: .plain)

let sc = UISearchController(searchResultsController: results)
sc.delegate = self
sc.obscuresBackgroundDuringPresentation = true
sc.automaticallyShowsCancelButton = true
sc.hidesNavigationBarDuringPresentation = true // Setting to false causes other problems unrelated to this question

sc.searchBar.delegate = self

navigationItem.searchController = sc
Run Code Online (Sandbox Code Playgroud)

在真正的 macOS 应用程序(例如标准邮件应用程序)上,搜索栏的行为与UISearchBariOS 上的一样,而不是UISearchBarmacOS 上的。

这是 Mac Catalyst 中的错误,还是我遗漏了某些属性或委托,可以让 UISearchBar 及其图标在 …

uisearchbar ios uisearchcontroller mac-catalyst

7
推荐指数
0
解决办法
296
查看次数

SIGABRT 在 macCatalyst 中随机显示“以下金属对象正在被销毁,但命令缓冲区仍要求其处于活动状态”

我的 macCatalyst 应用程序最近发生了一些随机崩溃。到处寻找但没有找到任何好的线索。我的猜测是,这与内存或屏幕上可见的视图太多有关。我没有得到很好的堆栈跟踪,但这就是日志中显示的内容:

-[MTLDebugDevice notifyExternalReferencesNonZeroOnDealloc:]:2951: failed assertion `The following Metal object is being destroyed while still required to be alive by the command buffer 0x7f8cd811c600 (label: <no label set>):
<MTLToolsObject: 0x7f8b0f9e3d60> -> <MTLIGAccelTexture: 0x7f8cd8566a00>
    label = CAMetalLayer Drawable 
    textureType = MTLTextureType2D 
    pixelFormat = MTLPixelFormatBGRA8Unorm_sRGB 
width = 772 
height = 1372 
depth = 1 
arrayLength = 1 
mipmapLevelCount = 1 
sampleCount = 1 
cpuCacheMode = MTLCPUCacheModeDefaultCache 
storageMode = MTLStorageModeManaged 
hazardTrackingMode = MTLHazardTrackingModeTracked 
resourceOptions = MTLResourceCPUCacheModeDefaultCache MTLResourceStorageModeManaged MTLResourceHazardTrackingModeTracked  
usage = MTLTextureUsageShaderRead MTLTextureUsageShaderWrite …
Run Code Online (Sandbox Code Playgroud)

macos sigabrt swift mac-catalyst

7
推荐指数
1
解决办法
1629
查看次数

使用 Crashlytics 为 Mac Catalyst 构建

有没有人使用 Crashlytics 能够为 Mac Catalyst 编译他们的 iOS 应用程序?

我尝试为 Catalyst 构建我们的 iOS 应用程序之一,但出现以下错误:

ld: in /Users/foo/bar/Pods/Crashlytics/iOS/Crashlytics.framework/Crashlytics(CLSInternalReport.o), building for Mac Catalyst, but linking in object file built for iOS Simulator, file '/Users/foo/bar/Pods/Crashlytics/iOS/Crashlytics.framework/Crashlytics' for architecture x86_64
Run Code Online (Sandbox Code Playgroud)

我已经使用 Cocoapods 更新到最新版本的 Crashlytics。由于 CL 已经在 macOS 上运行,我认为可以使用 Catalyst 链接到正确的 x86 库。

crashlytics mac-catalyst

6
推荐指数
1
解决办法
938
查看次数

Mac Catalyst 模态演示无动画

我最近通过 Catalyst 将我的一款应用程序桥接到 Mac。然而,我们注意到一些奇怪的事情:在 Mac 上,formSheet模态演示的动画消失了。当我调用present时,animated参数为true,过渡样式为默认,但是Mac中presenting时没有动画;它就直接跳入视野。然而,当关闭时,它有一个淡入淡出过渡,尽管在 iOS 上一切都很好并且过渡是默认的 - 从屏幕底部进入和退出。

这是示例代码:

let controller = UIStoryboard(name: "Main", bundle: .main).instantiateViewController(withIdentifier: "MyViewController") as? MyViewController else { return }
let navigationController = UINavigationController(rootViewController: controller)
navigationController.modalPresentationStyle = .formSheet
present(navigationController, animated: true, completion: nil)
Run Code Online (Sandbox Code Playgroud)

macos uikit ios swift mac-catalyst

6
推荐指数
0
解决办法
770
查看次数

Mac Catalyst - 向 UITableView/UIScrollView 添加单击 + 拖动手势

我正在为自由项目 \xe2\x80\x94 启用 Catalyst 支持,我立即注意到的一件事是 MacOS 与 iOS 上滚动视图的不同行为。我希望能够像通常在 iOS 模拟器中一样单击并拖动UIScrollViews 或UITableViews,但我只能使用鼠标滚轮(或触控板上的两个手指手势)滚动这些视图。

\n

有什么方法可以模仿UIPanGestureRecognizeriOS 上的行为UIScrollViewUITableView在 MacOS 上使用“单击 + 拖动”手势吗?

\n

谢谢 :)

\n

macos xcode objective-c ios mac-catalyst

6
推荐指数
1
解决办法
1005
查看次数

快速可用性检查 macCatalyst / iOS 失败

我已经iOS 15+/macCatalyst 15.0+向我的应用程序添加了一个功能,现在在 M1 iMac 上通过Mac Catalyst (Designed for iPad).

我对我的函数进行了可用性检查,但是当在我的 Mac (macOS 11.6) 上运行时,可用性检查中的代码仍然运行并崩溃。

if #available(iOS 15.0, macCatalyst 15.0, *) {
    dataSource.applySnapshotUsingReloadData(fullSnapshot, completion: nil)
} else {
    dataSource.apply(fullSnapshot, animatingDifferences: false)
}
Run Code Online (Sandbox Code Playgroud)

我了解Designed for iPadmac Catalyst 在 iOS 上运行,并且我可以确认它正在使用运行,iOS 14.7那么print(UIDevice.current.systemVersion)为什么它运行设置为iOS 15+仅运行的代码?

我的 macCatalyst 检查正确吗?

ios swift availability mac-catalyst

6
推荐指数
2
解决办法
1443
查看次数

如何在 swiftui 中使用 .quickLookPreview 修饰符

我正在尝试使用.quickLookPreviewiOS 14、macOS 11 macCatalyst 14 中引入的视图修改器,但Value of type 'some View' has no member 'quickLookPreview'每次尝试在 macOS 或 mac Catalyst 目标上使用该修改器时都会收到此错误。在 iOS 上,这工作得很好。在 Mac 上呈现此修改器的正确方法是什么?

import SwiftUI
import QuickLook


struct ContentView: View {

@State var documentUrl: URL?

var body: some View {
    NavigationView {

    ZStack {
        
        Button("Press Me", action: {
            documentUrl = URL(fileURLWithPath: "somelocalfileURLPath")
        })
        
        
       
    }
    .navigationTitle("Open File")
    .quickLookPreview($documentUrl)
        
    }
    
}

}
Run Code Online (Sandbox Code Playgroud)

Xcode 13.1 MacOS 12.1

macos quicklook swiftui mac-catalyst viewmodifier

6
推荐指数
1
解决办法
1844
查看次数