UIBarButtonItem,设置独占触摸

7

有没有一种方法可以使UIBarButtonItem仅限于单击触发?目前,您可以同时选择多个选项,这可能导致应用程序崩溃。

6个回答

9
比子类化导航栏稍微简单一些的方法,但是思路相同;
for(UIView *temp in self.navigationController.navigationBar.subviews)
{
    [temp setExclusiveTouch:YES];
}

在添加工具栏按钮项之后,将此代码放置在其后即可。

8
我通过继承UINavigationBar并重写layoutSubviews方法来解决了这个问题。类似于下面的代码:

- (void)layoutSubviews {
    [super layoutSubviews];
    for (UIView *view in self.subviews) {
        view.exclusiveTouch = YES;
    }
}

3
抱歉,我不太明白您的意思。您需要将这段话翻译成中文吗?
[self.navigationController.navigationBar setExclusiveTouch:YES]; 

iOS7可能已经继承了专属触摸。

在iOS15上无法工作 - inexcii

0
对我来说,我使用了一个UIButton,将其isExclusiveTouch设置为true,来初始化UIBarButtonItem
let button = UIButton(type: .system)
button.setTitle("foo", for: .normal)
button.addTarget(self, action: #selector(buttonTapped(_:)), for: .touchUpInside)
button.isExclusiveTouch = true

let barButtonItem = UIBarButtonItem(customView: button)

0
在iOS 7中它不起作用。我已经使用了这种方法来尝试修复它。
for(UIView *temp in self.navigationController.navigationBar.subviews){
    [temp setExclusiveTouch:YES];
    for(UIView *temp2 in temp.subviews){
        [temp2 setExclusiveTouch:YES];
    }
 }

-1

对于使用initWithTitle创建的UIBarButtonItem不起作用。


什么不起作用?这不应该是对别人帖子的评论吗? - Mike Mellor

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接