我可以使用类类别来覆盖已使用类别实现的方法吗?像这样:
1)原始方法
-(BOOL) method {
return true;
}
Run Code Online (Sandbox Code Playgroud)
2)覆盖方法
-(BOOL) method {
NSLog(@"error?");
return true;
}
Run Code Online (Sandbox Code Playgroud)
这会起作用,还是非法的?
希望有人可以帮助我 - 我在网上搜索答案,但找不到 -
添加到UINavigationBar的UIBarButtonItem具有比所需更大的点击区域 - 例如,打开任何项目,你有一个带按钮的导航栏,点击按钮结尾和导航栏标题之间的任意位置 - 按钮点击,当你明显没有点击按钮时 -
也可以尝试这一点 - 点击导航栏下方,按钮下方,按钮点击导航栏下方约5个像素 -
我的问题是这个 -
我已经增加了一个自定义首部和按钮,用于一个tableview-但是当我点击标题中的按钮,所述按钮UINavigationBar的触发对那些5+像素代替按钮在tableview中报头 -
我做了一个测试,并从UINavigationBar中删除了按钮,有趣的是,对于导航栏下方的5个像素,即使导航栏中没有按钮,标题中的按钮也不会触发 -
它几乎像导航栏一样保留了低于其自身的5个像素作为点击空间 -
我的问题是这个 -
有人可以告诉我如何使导航栏没有为其按钮抓取额外的5+像素?
非常感谢 ;)
我正在使用自定义drawRect函数UINavigationBar在iOS4中跨我的应用程序进行绘制,它不使用图像,只使用CoreGraphics.
由于您无法UINavigationBar在iOS5中实现类别中的drawRect ,因此Apple建议使用子类UINavigationBar.
当属性是只读时,如何替换UINavigationBarmy子类UINavigationController(因此它将与iOS4和iOS5兼容)navigationBar?
@property(nonatomic, readonly) UINavigationBar *navigationBar
Run Code Online (Sandbox Code Playgroud)
我根本不在我的应用程序中使用XIB,因此添加UINavigationBar到NIB并通过InterfaceBuilder更改类不是一种选择.
iphone cocoa-touch uinavigationbar uinavigationcontroller ios
当我在手机上玩时,我注意到我的UISegmentedControl响应不是很快.需要2次或更多次尝试才能使我的水龙头注册.所以我决定在Simulator中运行我的应用程序,以更准确地探测出错了什么.通过用鼠标点击几十次,我确定UISegmentedControl的前25%没有响应(下面的屏幕截图中的部分用Photoshop突出显示为红色).我不知道有什么看不见的UIView可以阻止它.你知道怎么让整个控件可以安装吗?

self.segmentedControl = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:@"Uno", @"Dos", nil]];
self.segmentedControl.selectedSegmentIndex = 0;
[self.segmentedControl addTarget:self action:@selector(segmentedControlChanged:) forControlEvents:UIControlEventValueChanged];
self.segmentedControl.height = 32.0;
self.segmentedControl.width = 310.0;
self.segmentedControl.segmentedControlStyle = UISegmentedControlStyleBar;
self.segmentedControl.tintColor = [UIColor colorWithWhite:0.9 alpha:1.0];
self.segmentedControl.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin;
UIView* toolbar = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.width, HEADER_HEIGHT)];
toolbar.autoresizingMask = UIViewAutoresizingFlexibleWidth;
CAGradientLayer *gradient = [CAGradientLayer layer];
gradient.frame = CGRectMake(
toolbar.bounds.origin.x,
toolbar.bounds.origin.y,
// * 2 for enough slack when iPad rotates
toolbar.bounds.size.width * 2,
toolbar.bounds.size.height
);
gradient.colors = [NSArray arrayWithObjects:
(id)[[UIColor whiteColor] CGColor],
(id)[[UIColor
colorWithWhite:0.8 …Run Code Online (Sandbox Code Playgroud) 我有一个应用程序,有三个按钮(实际上UIView是)水平放置在导航栏下方.
这三个按钮的尺寸足够大(例如,比后退按钮大),但是当击中大致位于前三分之一时,它们不会响应触摸.
我知道直接位于导航栏下方的这个区域对于后退按钮和其他UINavigation项目来说是"保留"的,其触摸区域扩展到导航栏之外(相当大的余量),但在某些情况下还有甚至附近的一个导航项目来窃取事件,我的观点仍然没有回应.
奇怪的是,我正在调用hitTest我的UIView中的方法,而不是touchesBegan/Ended/etc.
结果是按下按钮是非常困难的,如果一个在a附近的任何地方UINavigationItem,该项目将窃取事件,即使hitTest我正在返回正确UIView的系统.
不幸的是,我是实施者,而不是设计师,因此设计变更是最后的手段.
有任何想法吗?谢谢!
我知道有些人已经提出了这个问题,但到目前为止,答案并不是真正具体的.
显然苹果已经使NavigationBar的点击区域比实际大,但我不认为它应该那么大.
在我的应用程序中,NavBar下方有一个TableView,你可以一直点击第一个单元格的一半来触发rightBarButtonItem的事件.按钮的实例如下:
UIBarButtonItem *editButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemEdit target:self action:@selector(editTable)];
[[self navigationItem] setRightBarButtonItem:editButton];
Run Code Online (Sandbox Code Playgroud)
"self"是NavigationController的根ViewController.
你可以想象,这是一个问题,因为单元格可以选择推送另一个ViewController.
我设法通过使细胞的高度更大来解决问题,但我宁愿让它们处于常规尺寸.
我确信我不是唯一有这种情况的人.提前致谢.