标签: peek-pop

UITableView单元格上的Peek和Pop因UISearchController而失败

Peek和Pop正在合作UISearchController.但是,一旦您开始使用表格,Peek和Pop就会停止工作updateSearchResults.

使用UISearchController演示扩展了Apple的Table Search以支持Peek和Pop作为示例: 在此输入图像描述

问题是当我开始搜索表时,Peek和Pop不再起作用了.它只是选择亮点: 在此输入图像描述

我所做的更新MainTableViewController是:

class MainTableViewController: BaseTableViewController, UISearchBarDelegate, UISearchControllerDelegate, UISearchResultsUpdating {
    override func viewDidLoad() {
        super.viewDidLoad()
        ...
        if traitCollection.forceTouchCapability == .available {
            registerForPreviewing(with: self, sourceView: tableView)
        }
    }
}

extension MainTableViewController: UIViewControllerPreviewingDelegate {

    func previewingContext(_ previewingContext: UIViewControllerPreviewing, viewControllerForLocation location: CGPoint) -> UIViewController? {
        guard let indexPath = tableView?.indexPathForRow(at: location),
            let cell = tableView?.cellForRow(at: indexPath),
            let controller = storyboard?.instantiateViewController(withIdentifier: "DetailViewController") as? DetailViewController
                else { return nil }

        previewingContext.sourceRect = cell.frame …
Run Code Online (Sandbox Code Playgroud)

uitableview ios swift uisearchcontroller peek-pop

16
推荐指数
1
解决办法
1317
查看次数

应用程序在iPhone 6s的'偷看和弹出'实现中冻结

我已经在我的应用程序中实现了窥视和弹出,它完美无缺.但是在不断尝试7-8次时,应用程序冻结在窥视视图上.我唯一的选择是杀死应用程序并重新运行.请让我知道冻结的原因.我在我的项目中使用了以下代码来查看和弹出:

var isPresentedBy3Dtouch: Bool = false
var passedDetails:DetailModel!

func previewingContext(previewingContext: UIViewControllerPreviewing, viewControllerForLocation location: CGPoint) -> UIViewController? {

  guard let indexPath = tableView?.indexPathForRowAtPoint(location)
    else { return nil }

  guard let cell = tableView?.cellForRowAtIndexPath(indexPath)
    else { return nil }

  guard let detailViewController = self.storyboard?.instantiateViewControllerWithIdentifier("Navigation") as? UINavigationController
    else { return nil }

   (detailViewController.topViewController as! DetailViewController).passedDetails = self.customerLists[indexPath.row]
   (detailViewController.topViewController as! DetailViewController).isPresentedBy3Dtouch = true
   detailVC.preferredContentSize = CGSize(width: 0.0, height: 480.0)
    previewingContext.sourceRect = cell.frame
    return detailVC
}

func previewingContext(previewingContext: UIViewControllerPreviewing, commitViewController viewControllerToCommit :UIViewController) {
    showViewController(viewControllerToCommit, sender: …
Run Code Online (Sandbox Code Playgroud)

iphone ios swift peek-pop

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

像偷看和流行一样手动振动iPhone 6S?

如何手动触发像使用peek&pop或应用程序快捷方式时发生的单击式振动?

iphone-vibrate vibration ios peek-pop

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

当searchController处于活动状态时,3D Touch不起作用

我已经用uicollectionview实现了3D Touch,效果很好。但是,当uisearchController处于活动状态时,3D Touch不起作用。uisearchController使用collectionView显示结果。以下帖子也出现了同样的问题: 3d Peek&Pop搜索结果

有人有同样的问题吗?谢谢

我想出了解决方案:

扩展MyViewController:UISearchControllerDelegate {

func didPresentSearchController(_ searchController: UISearchController) {
    if let context = previewingContext {
    unregisterForPreviewing(withContext: context)
    previewingContext = searchController.registerForPreviewing(with: self, sourceView: self.myCollectionView)
    }
}

func didDismissSearchController(_ searchController: UISearchController) {
    if let context = previewingContext {
        searchController.unregisterForPreviewing(withContext: context)
        previewingContext = registerForPreviewing(with: self, sourceView: self.myCollectionView)
    }
}
Run Code Online (Sandbox Code Playgroud)

}

ios uisearchcontroller peek-pop

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

如何围绕sourceRect的角落来寻找Peek和Pop 3D Touch?

在Safari中,如果使用3D触摸,则正在触摸的链接的sourceRect具有圆角.当我将源矩形设置为:func previewingContext(previewingContext: UIViewControllerPreviewing, viewControllerForLocation location: CGPoint) -> UIViewController? {在previewingContext上时,我只能设置previewingContext.sourceRect哪些不允许我绕角,或设置多角区域.我怎样才能做到这一点?

ios swift 3dtouch peek-pop

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

3D触控:流行控制器无需偷看

我有表视图的一些内容项列表,以及每个项的选项控制器.我在3D触摸上使用此选项控制器或为旧设备长按此选项.我以非常基本的方式实现了它:

extension ViewController {
    func checkForForceTouch() {
        if #available(iOS 9.0, *) {
            if traitCollection.forceTouchCapability == .available {
                registerForPreviewing(with: self, sourceView: tableView)
            } else {
                addLongPressRecognizer()
            }
        } else {
            addLongPressRecognizer()
        }
    }

...
}

@available(iOS 9.0, *)
extension ViewController: UIViewControllerPreviewingDelegate {
    public func previewingContext(_ previewingContext: UIViewControllerPreviewing, viewControllerForLocation location: CGPoint) -> UIViewController? {
        if let indexPath = tableView.indexPathForRow(at: location) {
            let cell = tableView.cellForRow(at: indexPath)!
            previewingContext.sourceRect = cell.frame

            return self.optionsController(for: indexPath)
        } else {
            return nil
        }
    }

    public func previewingContext(_ …
Run Code Online (Sandbox Code Playgroud)

ios 3dtouch peek-pop

5
推荐指数
0
解决办法
301
查看次数

3D触摸Peek在变换倒置表视图单元格中

我有一个聊天应用程序,我使用倒置表视图技术(表视图使用转换缩放到(1,-1),并且所有单元格本身也缩放到(1,-1),中和效果,从而有效地反转表视图以显示底部的"第一个"单元格,从底部"开始"表格视图.一切都很好,除了我需要实现偷看和弹出手势.我已将表格视图单元格中的一个按钮连接到目标视图控制器,并启用了peek和pop,如下所示:

在此输入图像描述

手势有效,但是当我3D触摸部分并保持足够突出被触摸的项目(但不弹出预览视图控制器)时,我得到倒置视图:

在此输入图像描述

如何在仍使用倒置表视图的同时使用正确的变换弹出视图?

uitableview ios ios9 3dtouch peek-pop

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

如何在iOS 13中窥视和弹出视图控制器

在iOS 13中不推荐使用Peek and pop(UIViewControllerPreviewing)。它将替换为新的contextMenuInteraction东西。

那么,如何直接替换偷看和弹出?换句话说,如何将目标视图控制器显示为预览(预览),然后让用户从那里弹出以显示实际的目标视图控制器?

这是我正在尝试的方法,但与旧的“窥视”和“流行乐”不同:

override func viewDidLoad() {
    super.viewDidLoad()
    let inter = UIContextMenuInteraction(delegate: self)
    self.view.addInteraction(inter)
}

func contextMenuInteraction(_ inter: UIContextMenuInteraction, 
    configurationForMenuAtLocation loc: CGPoint) -> UIContextMenuConfiguration? {
        let config = UIContextMenuConfiguration(identifier: "preview" as NSString, 
            previewProvider: { SecondViewController() }, actionProvider: nil)
        return config
}

func contextMenuInteraction(_ interaction: UIContextMenuInteraction, 
    willCommitWithAnimator animator: UIContextMenuInteractionCommitAnimating) {
        // animator.preferredCommitStyle = .pop
        if let vc = animator.previewViewController {
            animator.addCompletion {
                self.present(vc, animated: true, completion: nil)
            }
        }
}
Run Code Online (Sandbox Code Playgroud)

在此简单测试中,我们可以长按以查看第二个视图控制器的预览,从而成为第一个视图控制器的整个背景视图。发生的是,我们确实看到了预览,用户可以点击它。但是,然后关闭预览,然后显示第二个视图控制器。

那不是偷看。预览和弹出意味着预览 …

ios peek-pop ios13

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

为什么我的一些推动故事板细分不显示偷看和流行的选项?

我的一些push segues显示了peek和pop的选项,而其他推送segues没有显示选项.这是为什么?

在此输入图像描述

ios uistoryboard segue 3dtouch peek-pop

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

Peek/Pop预览忽略集合视图中的单元格角半径

我已将3D Touch Peek/Pop功能添加到我的集合视图单元格中并且效果很好,但是我注意到预览框架不尊重单元格的角半径.

这是我的预览功能:

func previewingContext(previewingContext: UIViewControllerPreviewing, viewControllerForLocation location: CGPoint) -> UIViewController? {
    let viewController = storyboard?.instantiateViewControllerWithIdentifier("scholarDetailViewController") as? ScholarDetailViewController
    let cellPosition = self.scholarsCollectionView.convertPoint(location, fromView: self.view)
    let cellIndex = self.scholarsCollectionView.indexPathForItemAtPoint(cellPosition)

    guard let previewViewController = viewController, indexPath = cellIndex, cell = self.scholarsCollectionView.cellForItemAtIndexPath(indexPath) else {
        return nil
    }

    let scholar = self.searchBarActive ? self.searchResults[indexPath.item] as! Scholar : self.currentScholars[indexPath.item]
    previewViewController.setScholar(scholar.id)
    previewViewController.delegate = self
    previewViewController.preferredContentSize = CGSize.zero
    previewingContext.sourceRect = self.view.convertRect(cell.frame, fromView: self.scholarsCollectionView)

    return previewViewController
}
Run Code Online (Sandbox Code Playgroud)

我已经尝试设置previewingContext sourceView的角半径,并在单元格上使用masksToBounds,但到目前为止我没有尝试过任何帮助.

这是单元设置:

override func awakeFromNib() {
    self.layer.cornerRadius = 7 …
Run Code Online (Sandbox Code Playgroud)

ios uicollectionview swift 3dtouch peek-pop

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