【问题标题】:Place a pop over on a specific location在特定位置放置一个弹出窗口
【发布时间】:2010-08-18 23:50:15
【问题描述】:

场景: 我的视图控制器顶部有一个 UITabBar。标签栏上有几个按钮。 当用户点击任何按钮时,我想在被点击的按钮下方显示一个弹出框。

我可以毫无问题地显示弹出窗口,但我不知道如何检测已按下按钮的位置,因为 UITabItem 没有公开框架结构。

我该如何解决我的问题?

【问题讨论】:

    标签: iphone ipad


    【解决方案1】:

    你可以自己计算UITabBarItem的frame:

    CGFloat tabItemWidth = tabBar.bounds.size.width / [tabBar.items count];
    CGRect tabItemFrame = CGRectMake(tabItemWidth * [tabBar.items indexOfObject:tabBar.selectedItem], 0, tabItemWidth, tabBar.bounds.size.height);
    

    (我没有尝试过这段代码,但是这个或类似的东西应该可以工作)。

    或者,您应该能够继承 UITabBar 并覆盖 touchesEnded:withEvent:。在该方法中,将触摸的位置存储在 ivar 中。然后在你的 UITabBarDelegate 的 tabBar:didSelectItem: 中你可以使用触摸的位置。

    【讨论】:

    • 根据发现更新:如果tab bar item有图片,可以使用UITabBar的selectedItem属性获取当前选中的UITabBarItem,然后获取tab bar item图片的frame。在调用 presentPopoverFromRect:inView:permittedArrowDirections:animated: 时使用图像的框架
    • 提供的代码无法编译(第 2 行) - 二进制操作数无效
    • 对,我没有意识到 selectedItem 不是索引。我已经用应该可以工作的东西更新了它,但你可能需要使用它。不过看起来你已经有了解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-28
    • 2011-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多