首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >3DTouch使用UIButton以编程方式预览和弹出

3DTouch使用UIButton以编程方式预览和弹出
EN

Stack Overflow用户
提问于 2016-03-13 16:58:02
回答 1查看 1K关注 0票数 0

所以我有一个显示x,y图形的ViewController,每个点都是一个编程的UIButton,当按下它时,它会显示一个警告。我想知道是否有可能使用3DTouch peek和pop在UIButton中用力按下,它会把你带到另一个视图。

EN

回答 1

Stack Overflow用户

发布于 2016-06-29 21:04:45

好的,首先你需要注册预览:

代码语言:javascript
复制
if traitCollection.forceTouchCapability == .available {
        registerForPreviewing(with: self, sourceView: view)
    }

将委派添加到您的ViewController

代码语言:javascript
复制
class ViewController: UIViewController, UIViewControllerPreviewingDelegate {

然后添加委托方法:

代码语言:javascript
复制
func previewingContext(_ previewingContext: UIViewControllerPreviewing, viewControllerForLocation location: CGPoint) -> UIViewController? {
    let stboard = UIStoryboard(name: "HomeScreen", bundle: nil)
    guard let detailVC = stboard.instantiateViewController(withIdentifier: "DetailViewController") as? SecondVC else { return nil }
    // 1
    let pressedView = tappedView(location)
    previewingContext.sourceRect = pressedView.frame

    return detailVC
}

func previewingContext(_ previewingContext: UIViewControllerPreviewing, commit viewControllerToCommit: UIViewController) {
    show(viewControllerToCommit, sender: self)
}

在(1)中,因为你有第二个视图控制器的一个实例,所以你可以很容易地在这里传递数据。

我不知道你是如何管理你的按钮的,但是我有一个非常类似的场景(在屏幕上随机移动UIViews ),所以一旦在MainView中加载了一个视图,我就把它附加到一个视图数组中。

代码语言:javascript
复制
viewArray.append(newView)

然后我创建了一个方法来检查我是否按下了

代码语言:javascript
复制
func tappedView(_ location: CGPoint) -> UIView{

    var tappedVw = UIView()

    for vw in viewArrays{
        if vw.frame.contains(location){
            tappedVw = vw as! UIView
        }
    }
    return tappedVw
}

希望这能有所帮助

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35968392

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档