我需要导航栏左侧的两个按钮。我弄清楚如何做到这一点的唯一方法是首先将它们放入UIToolbar,然后将leftBarButtonItem设置为。
如果我这样做,它可以正常工作(点击时可以看到它突出显示):
UIBarButtonItem* myBtn = [[UIBarButtonItem alloc] initWithTitle:@"Button" style:UIBarButtonItemStyleBordered target:self action:@selector(doSomething:)];
self.navigationItem.leftBarButtonItem = myBtn;
但是,如果我这样做,按钮动作仍然会发生,但没有突出显示(没有视觉反馈,你正在点击按钮):
NSMutableArray* buttons = [[NSMutableArray alloc] initWithCapacity:2];
UIBarButtonItem* myBtn = [[UIBarButtonItem alloc] initWithTitle:@"Button" style:UIBarButtonItemStyleBordered target:self action:@selector(doSomething:)];
UIBarButtonItem* myBtn2 = [[UIBarButtonItem alloc] initWithTitle:@"Button2" style:UIBarButtonItemStyleBordered target:self action:@selector(doSomethingElse:)];
[buttons addObject:myBtn];
[buttons addObject:myBtn2];
UIToolbar* toolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 133, 44)];
[toolbar setItems:buttons animated:NO];
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:toolbar];
知道为什么这会导致按钮在触摸时不突出显示?
答案 0 :(得分:1)
我不认为UIBarButtonItem对象在被修饰时会突出显示。即使是导航栏中的默认后退按钮在触摸时也会突出显示。它只以这种方式工作。不确定,但你可以尝试使用单段的UISegmentedControl。它可能会产生突出的幻觉,而且看起来只有巴顿按钮。
答案 1 :(得分:1)
在选择器功能(例如doSomething
)中,如果按下该按钮的tintColor
属性,则将其设置为所需的突出显示颜色;如果未按下,则将其设置为默认颜色。并确保按钮的突出显示颜色与默认颜色不同,以便您知道突出显示了该颜色。
根据Apple Docs,showsTouchWhenHighlighted
的功能是:
一个布尔值,确定是否点击按钮会使其发光。
但这仅适用于UIButton
。我不认为UIBarButtonItem
有突出显示选项。
请注意,UIBarButtonItem
继承自UIBarItem
而不是NSObject
的{{1}},因此您可以预期会有不同的行为。