- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有一个 UIBarButtonItem
和 UIButton
作为自定义 View 。
UIButton
上有一个 addTarget:action:
。在 Action 中,我展示了一个弹出窗口。我目前正在从 sender.frame
(UIButton
的框架)进行展示,我想从 UIBarButtonItem
进行展示。
如何从 UIButton
访问 UIBarButtonItem
?
最佳答案
如果您已将 UIButton
设置为 UIBarButtonItem
的 customView
或自定义 View 的 subview ,那么您可以向上走从按钮开始的 View 层次结构,直到找到包含该按钮的 UIToolbar
或 UINavigationBar
,然后在栏的项目中搜索其自定义 View 是按钮(或祖先 View )的项目按钮)。
这是我完全未经测试的代码。您可以调用 [[self class] barButtonItemForView:myButton]
来获取包含您的按钮的项目。
+ (BOOL)ifBarButtonItem:(UIBarButtonItem *)item containsView:(UIView *)view storeItem:(UIBarButtonItem **)outItem {
UIView *customView = item.customView;
if (customView && [view isDescendantOfView:customView]) {
*outItem = item;
return YES;
} else {
return NO;
}
}
+ (BOOL)searchBarButtonItems:(NSArray *)items forView:(UIView *)view storeItem:(UIBarButtonItem **)outItem {
for (UIBarButtonItem *item in items) {
if ([self ifBarButtonItem:item containsView:view storeItem:outItem])
return YES;
}
return NO;
}
+ (UIBarButtonItem *)barButtonItemForView:(UIView *)view {
id bar = view;
while (bar && !([bar isKindOfClass:[UIToolbar class]] || [bar isKindOfClass:[UINavigationBar class]])) {
bar = [bar superview];
}
if (!bar)
return nil;
UIBarButtonItem *item = nil;
if ([bar isKindOfClass:[UIToolbar class]]) {
[self searchBarButtonItems:[bar items] forView:view storeItem:&item];
}
else {
UINavigationItem *navItem = [bar topItem];
if (!navItem)
return nil;
[self ifBarButtonItem:navItem.backBarButtonItem containsView:view storeItem:&item]
|| [self ifBarButtonItem:navItem.leftBarButtonItem containsView:view storeItem:&item]
|| [self ifBarButtonItem:navItem.rightBarButtonItem containsView:view storeItem:&item]
|| ([navItem respondsToSelector:@selector(leftBarButtonItems)]
&& [self searchBarButtonItems:[(id)navItem leftBarButtonItems] forView:view storeItem:&item])
|| ([navItem respondsToSelector:@selector(rightBarButtonItems)]
&& [self searchBarButtonItems:[(id)navItem rightBarButtonItems] forView:view storeItem:&item]);
}
return item;
}
关于objective-c - UIBarButtonItem with UIButton as CustomView - 从 UIButton,如何访问它的 UIBarButtonItem?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9505768/
我目前正在制作一款游戏,该游戏扩展了此处的教程: http://www.edu4java.com/en/androidgame/androidgame.html 我目前的屏幕布局如下所示: http:
我创建了一个自定义的SurfaceView,我试图找到一个解决方案,以匹配我的surfaceview尺寸到android屏幕尺寸(动态)。GameSurface:。MainActivity:。我确实试
目前我开始为一个项目提供支持,在那里我发现了一个非常有趣的技巧。它提供了一个机会,不要在 xml 中为 CustomView 编写完整的类名,我认为它看起来很脏。 以下是这个技巧的实现步骤: 1) 在
我正在制作 UI 循环并希望支持 CustomView.swift 已添加到我的 xcode 中。 这是 Xcode 中最新的 swift import UIKit class CustomView:
我想创建一个显示图像的 CustomView。单击 View 应更改其状态。 View 可以表示三种状态(off, set, notset)。我想用 XML 格式的 选择器 来做到这一点。它不一定是自
我创建了一个 CustomView,并将其添加到 XML 布局中。这是一个非常简单的布局,应该不会出现任何问题。不过,令我恼火的是,某些元素似乎被添加到布局中两次(在其内部)。 XML 看起来像这样:
我想按进度绘制像这张图片一样的自定义drawrect: 但是,我的问题是将左上角的起点更改为中上角,到目前为止,这是我的自定义 View : public class RoundProgress ex
我想用自定义 View 试用 ViewBinding,例如: MainActivity layout_main.xml MyCustomView layout_my_custom_view.xml
我最近添加了 this我的 Android 项目中的 GitHub 存储库,所以我继续添加我的 gradle 依赖项,如下所示: dependencies { testCompile 'jun
我正在尝试在我的导航栏中使用自定义按钮,没有左右空格来边框,如下图所示: 这是创建 te barButton 的代码: UIImage *backImage = [UIImage imageNamed
是否有任何适用于 Android 的 CustomView 可以显示颜色盘(最好)或颜色网格并让您选择颜色? 最佳答案 您可以使用 API demoes 中的颜色选择器. 关于android - 是否
我制作了一个名为 CounterWidget 的自定义 View 。如图所示,给定数字的数字显示在单独的矩形框(包括逗号)中。对于小数字,渲染就很好。但是在大数字(非常大)的情况下,渲染会比屏幕大,一
在我的应用程序中,我有一个在“compassView”类中呈现的基本指南针。如果我像这样在我的 Display Compass Activity 中设置 contentView:compassView
我将 TabLayout 与 ViewPager 结合使用,并为我的选项卡设置了自定义 View 。选择和取消选择选项卡时,一切都按预期工作(自定义 View 根据选择/未选择的选项卡而改变)。 问题
我正在尝试创建一个允许我添加图像和文本的自定义 View 。我这样做的原因是因为在我创建的应用程序中,我一遍又一遍地重复相同的代码以实现这一点,我想尝试将它包装到自己的自定义 View 中,这样我就可
我有一个带有 2 个标签和图像的自定义按钮,如下面的类所示 import UIKit @IBDesignable class CustomButton : UIButton { let sec
所以,我想做这样的事情:从我的在线数据库中,我获得 x,y 坐标、对象的高度和宽度、对象的图像。我想制作自定义 View ,以便我可以将所有这些对象放置在正确的位置,以便这些对象在所有屏幕尺寸上都相同
在最终让每个 CustomView 完全包裹 Tab 父元素之后,我遇到了一个问题,即 Tab 太长并且正在将 Action Bar 变成一个 slider 。我的可绘制对象的宽度为 150px,这应
目前我想创建一个应用程序,它可以记录麦克风的声音并在 CustomView 中可视化 like this .录音效果很好,我还获得了录音的振幅,因此我可以使用以下代码在屏幕上绘制矩形: protect
我想在我的 CustomView(例如 EditText)中检测返回键事件。在很多情况下,它是在我的 CustomView 获得焦点的情况下通过覆盖 onKeyDown() 或 dispatchKey
我是一名优秀的程序员,十分优秀!