标签: uicontextmenuinteraction

UICollectionView 重新排序:交互式移动还是拖放?

从 iOS 9 开始,UICollectionView 通过beginInteractiveMovement及其同级方法支持交互式移动。从iOS 11开始,它还支持拖放,这似乎也支持移动。在 iOS 13 beta 4 中,拖放手势已与UIContextMenuInteraction动画相结合(Twitter 链接),因此您可以从上下文菜单过渡到拖动操作,但通过交互式移动 API 重新排序时情况并非如此。

在集合视图中使用拖放来实现项目的交互式移动是否更好?

ios uicollectionview uidragitem uicontextmenuinteraction

8
推荐指数
1
解决办法
865
查看次数

显示 UIContextMenu 时从 UICollectionView 删除项目时出现奇怪的动画

我正在使用UIContextMenuInteraction以下内容显示上下文菜单UICollectionView

func collectiovnView(_ collectionView: UICollectionView, contextMenuConfigurationForItemAt indexPath: IndexPath, point: CGPoint) -> UIContextMenuConfiguration? {
    return UIContextMenuConfiguration(identifier: nil, previewProvider: nil, actionProvider: { _ in
        let deleteAction = UIAction(title: "Delete", image: UIImage(systemName: "trash"), attributes: .destructive) { _ in
            self.deleteItem(at: indexPath)
        }
        return UIMenu(title: "Actions", children: [deleteAction])
    })
}

func deleteItem(at indexPath: IndexPath) {
    self.collectionView.performBatchUpdates({
        self.items.remove(at: indexPath.item)
        self.collectionView.deleteItems(at: [indexPath])
    })
}
Run Code Online (Sandbox Code Playgroud)

一切正常,但是当我点击“删除”项目时,会发生一个奇怪的动画,其中已删除的项目留在原地而其他项目正在移动,然后它立即消失。有时我什至在新项目出现之前的几分之一秒内看到一个空白区域或一个随机项目。

如果我collectionView.deleteItems()在上下文菜单未显示时调用,则删除动画按预期工作。

ios uicollectionview swift uicontextmenuinteraction

8
推荐指数
1
解决办法
864
查看次数

如何使用 UIPreviewParameters 指定一系列文本作为 UIContextMenuInteraction 的突出显示预览,而不隐藏视图的其余部分?

iOS 13.4 更新(2020 年 3 月):

UIPointerInteraction将鼠标悬停在链接上时也会发生这种情况。


我有一个视图,当用户长按链接时,显示富文本并显示 iOS 13 上下文菜单。当用户开始长按时,我希望能够仅突出显示链接而不是整个视图。

为此,我提供了一个UITargetedPreview对象,其中包含UIPreviewParameters要在视图中CGRect突出显示的每行的 s 。UIContextMenuInteractionDelegate这正确地突出显示了链接,但也产生了隐藏视图其余部分的副作用

这张图说明了这个问题:

在此输入图像描述

请注意,虽然链接正确突出显示,但当长按链接然后释放时,视图的其余部分会闪烁。

将此与 Apple 自己的 Notes.app 中的行为进行比较:

在此输入图像描述

请注意,长按链接时视图的其余部分不会消失。这在 Apple 的其他应用程序(例如 Safari)中也能按预期工作。


UITargetedPreview通过以下方式向交互委托提供 s:

func contextMenuInteraction(_ interaction: UIContextMenuInteraction, previewForHighlightingMenuWithConfiguration configuration: UIContextMenuConfiguration) -> UITargetedPreview? {
    guard let range = configuration.identifier as? NSRange else { return nil }        
    let lineRects: [NSValue] = // calculate appropriate rects for the range of text
    let parameters = UIPreviewParameters(textLineRects: lineRects) …
Run Code Online (Sandbox Code Playgroud)

uikit ios swift uicontextmenuinteraction uipointerinteraction

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

如何隐藏 UIContextMenuInteraction/UITargetedPreview 黑色背景?

我想将 UIContextMenuInteraction 添加到带有一些透明部分的 UIView 中。当用户与此视图交互时,iOS 会以黑色背景显示此视图。

在此输入图像描述

是否可以使这些部分透明或改变颜色?

ios swift uicontextmenuinteraction uicontextmenuconfiguration

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

更改 ContextMenu 中 UIImage 的弹出大小?

假设您有一个图像的上下文菜单,长按时会弹出该图像。如何使弹出窗口更大,但保持相同的尺寸?


ViewControllerTableViewCell: UITableViewCell, UIContextMenuInteractionDelegate {

func contextMenuInteraction(_ interaction: UIContextMenuInteraction, configurationForMenuAtLocation location: CGPoint) -> UIContextMenuConfiguration? {
    UIContextMenuConfiguration(identifier: nil, previewProvider: nil)  { _ in
        let share = UIAction(title: "", image: UIImage(systemName: "")) { _ in
            // share code
        }
        return UIMenu(title: "", children: [share])
    }
}
Run Code Online (Sandbox Code Playgroud)
override func awakeFromNib() {
    super.awakeFromNib()
    immy.isUserInteractionEnabled = true
    immy.addInteraction(UIContextMenuInteraction(delegate: self))
}
Run Code Online (Sandbox Code Playgroud)

contextmenu uiimageview firebase swift uicontextmenuinteraction

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