Pop over doesn't point over the button

前端 未结 3 528
遥遥无期
遥遥无期 2021-02-05 03:49

I have an application that is compatible with both iPhone and iPad layouts. For iPhone layout I have created Action Sheet and Pop over for iPad. The problem is pop over\'s arrow

相关标签:
3条回答
  • 2021-02-05 04:13

    For me worked using the sender and casting as UIView.

    alertController.popoverPresentationController?.sourceView = sender as! UIView
    alertController.popoverPresentationController?.sourceRect = sender.bounds
    
    alertController.popoverPresentationController?.permittedArrowDirections = UIPopoverArrowDirection.Up
    
    0 讨论(0)
  • 2021-02-05 04:17

    Set the sourceView and sourceRect as the button and button.bounds.
    You can choose the permittedArrowDirections depending on the layout of your view.

    actionSheet.popoverPresentationController?.sourceView = button
    actionSheet.popoverPresentationController?.sourceRect = button.bounds;
    actionSheet.popoverPresentationController?.permittedArrowDirections = UIPopoverArrowDirection.Left;
    

    If the button is a BarButtonItem use this code.

    actionSheet.popoverPresentationController?.barButtonItem = button
    actionSheet.popoverPresentationController?.permittedArrowDirections = UIPopoverArrowDirection.Up;
    
    0 讨论(0)
  • 2021-02-05 04:24

    SWIFT 3

    This worked for me when my button was a UIBarButtonItem:

    if UIDevice.current.userInterfaceIdiom == .pad {
    
        if controller.responds(to: "popoverPresentationController") {
            controller.popoverPresentationController?.barButtonItem = YourUIBarButtonName
        }
    
    }
    

    Entire code snippet below:

    func presentActivitySheet() {
    
        let controller = UIActivityViewController(activityItems: [document.fileURL], applicationActivities: nil)
    
            if UIDevice.current.userInterfaceIdiom == .pad {
    
                if controller.responds(to: "popoverPresentationController") {
                controller.popoverPresentationController?.barButtonItem = YourUIBarButtonName
                }
    
            }
    
        present(controller, animated: true, completion: nil)
    }
    
    0 讨论(0)
提交回复
热议问题