弹出框和 Xamarin iOS

Posted

技术标签:

【中文标题】弹出框和 Xamarin iOS【英文标题】:Popovers and Xamarin iOS 【发布时间】:2016-05-09 14:33:07 【问题描述】:

我在使用 Popover 的 Xamarin ios 实现时遇到问题。

就我现在而言,它们可以通过 Apple 文档 (https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIPopoverPresentationController_class/) 中描述的新 UIPopoverPresentationController 类获得

我的代码是这样的:

public partial class PopoverSettings : UIViewController

    public PopoverSettings () //: base ("PopoverSettings", null)
    
    

    public override void ViewDidLoad ()
    
        base.ViewDidLoad ();
        View.Frame = new CoreGraphics.CGRect(0,0,100,100);
        this.PreferredContentSize = new CoreGraphics.CGSize (10, 10);
        View.BackgroundColor = UIColor.Red;
    

我尝试从

创建它
var myPop = new PopoverSettings();
myPop.ModalInPopover = true;
myPop.ModalPresentationStyle = UIModalPresentationStyle.Popover;
var pc = (UIPopoverPresentationController)myPop.PresentationController;
pc.SourceView = navigation;
pc.SourceRect = new CGRect(0,0,100,100);
this.PresentViewController(myPop, true, null);          

结果有效,但我得到的是全屏视图控制器,而不是“弹出框”组件!

有人知道为什么会这样吗?谢谢!

【问题讨论】:

您是在 iPad 还是 iPhone 上尝试这个?看看这个:***.com/questions/25319179/… 是的,但该解决方案包括 .NET 中不支持的多重继承(来自 UIViewController 和 UIPopoverPresentationControllerDelegate) 要绕过这个限制,您可以实现 IUIPopoverControllerDelegate 并重写适当的委托方法。 developer.xamarin.com/api/type/… 即使尝试实现 IUIPopoverPresentationControllerDelegate 它也不起作用。我可能感兴趣的每个属性都是“只读”的,如果我设置 Controller.PopoverPresentationController.Delegate = this,则该事件不是触发事件 上面第二个代码块中的“导航”是什么? 【参考方案1】:

如果您在 iPhone 上实现此功能,框架会自动将您的 PresentationStyle 更改为 Fullscreen。为了防止这种情况,您必须实现 IUIPopoverPresentationControllerDelegate 接口回调“adaptivePresentationStyleForPresentationController”。

[Export("adaptivePresentationStyleForPresentationController:")]
public UIModalPresentationStyle GetAdaptivePresentationStyle(UIPresentationController forPresentationController)

    return UIModalPresentationStyle.None;

然后您必须确保将 PresentationController 的委托属性设置为您实现回调的类的引用。

pc.delegate = this;

框架现在将调用您的回调,您可以强制它使其成为弹出框。

【讨论】:

以上是关于弹出框和 Xamarin iOS的主要内容,如果未能解决你的问题,请参考以下文章

正常的 Bootstrap 弹出框和 Angular 应用程序在一页中 - 弹出框不起作用

JavaScript的弹出框和Bootstrap的警告框和模态框

UIPopoverController 以不同的速度调整弹出框和内容视图控制器(uinavigationcontroller)的大小

离子应用程序在弹出框和模式关闭后冻结或停止工作

bootstrap这两个东西能实现这个效果么

Swift 从按钮内部、弹出框和单元格以编程方式在地图顶部打开一个新的视图控制器