• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - 缺少 UIPopoverController 的 PopoverBackroundViewClass 属性

[复制链接]
菜鸟教程小白 发表于 2022-12-13 11:41:45 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我正在使用最新的 Monotouch 5.2.4。作为我开发的一部分,我正在尝试更改 Popover Controller 的背景边框。根据苹果文档,这可以使用从 UIPopoverBackgroundView 类继承的自定义类进行管理。

所以我创建了如下这样的类

public class MyPopoverBackground : UIPopoverBackgroundView
{
    public MyPopoverBackground ()
    {
        UIImageView imgBackground = new UIImageView();
        UIImage img = UIImage.FromFile(@"SupportData/Popbg.png");
        img.StretchableImage(18,10);
        imgBackground.Image = img;
        this.AddSubview(imgBackground);
    }   
}

创建此类后,我试图将此 View 与 View Controller 中的 Popup 对象相关联。定义如下

UIPopoverController popup = new UIPopoverController(searchPage);
popup.popOverBackroundViewClass = new MyPopoverBackground(); //This line throws compilation error

上面代码的最后一行,分配发生的地方会引发编译错误(“不包含...的定义”)。

这是什么意思?这在 Monotouch 中不支持吗(在 Objective-C 中似乎支持,因为我在网上看到了很多示例)?或者我错过了什么。

感谢您的帮助。



Best Answer-推荐答案


好收获!它看起来像 popoverBackgroundViewClass 的绑定(bind)MonoTouch 目前缺少(iOS5 中的新功能)。

我会考虑实现它。如果您想在 http://bugzilla.xamarin.com 填写错误报告完成后您会收到通知(只需一个带有此问题链接的快速错误报告就足够了)。我应该也可以给你一个修补程序或解决方法。

更新

在 MonoTouch 5.3+(一旦发布)中,您将能够执行以下操作:

popoverController.PopoverBackgroundViewType = typeof (MyPopoverBackgroundView);

请注意,您不能创建自己的实例,因为它需要从 native 端完成(因此您只告诉 UIPopoverController 要创建哪种类型)。

您还需要遵循 UIPopoverBackgroundView 的所有要求,这意味着导出所需的选择器(这比简单地继承要复杂一些,因为它也需要 static 方法) .例如

    class MyPopoverBackgroundView : UIPopoverBackgroundView {

        public MyPopoverBackgroundView (IntPtr handle) : base (handle)
        {
            ArrowOffset = 5f;
            ArrowDirection = UIPopoverArrowDirection.Up;
        }

        public override float ArrowOffset { get; set; }

        public override UIPopoverArrowDirection ArrowDirection { get; set; }

        [Export ("arrowHeight")]
        static new float GetArrowHeight ()
        {
            return 10f;
        }

        [Export ("arrowBase")]
        static new float GetArrowBase ()
        {
            return 10f;
        }

        [Export ("contentViewInsets")]
        static new UIEdgeInsets GetContentViewInsets ()
        {
            return UIEdgeInsets.Zero;
        }
    }

关于ios - 缺少 UIPopoverController 的 PopoverBackroundViewClass 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9311914/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap