我的工具栏中有一个UiBarButton项目。我需要停用用户触摸交互 UiBarButton。它没有 setUserInteractionEnabled 属性。当我隐藏它时,没有适当的可见性。任何人都可以告诉我如何禁用UIbarbutton的用户触摸交互而不禁用它?
答案 0 :(得分:5)
要在UIToolBar中拥有标题,请将UIBarButtonItem添加到工具栏,然后将其customView属性设置为UILabel。然后,您可以设置标签的文本,而不是任何突出显示等。
// In @interface section:
@property (weak, nonatomic) IBOutlet UIBarButtonItem *titleButtonItem;
// In @implementation section:
- (void)viewDidLoad {
...
UILabel *titleLabel = [[UILabel alloc] init];
self.titleButtonItem.customView = titleLabel;
titleLabel.text = @"Some Title Text";
[titleLabel sizeToFit];
...
}
答案 1 :(得分:4)
你可以这样做:
[barButtonItem setTarget:nil];
[barButtonItem setAction:nil];
按钮看起来已启用,但不会接收任何触摸事件。
答案 2 :(得分:2)
你总是可以这样做:
[yourbutton removeTarget:nil
action:NULL
forControlEvents:UIControlEventAllEvents];
这将删除与按钮关联的所有操作和目标。
答案 3 :(得分:1)
制作与您的按钮相关联的自定义属性。
假设您的按钮触发了以下操作:
-(IBAction)fireOnButtonPress:(id)sender {
// do something
}
创建一个实例变量,例如BOOL interactionEnabled;
,并在viewDidLoad或其他init方法中将其设置为YES
interactionEnabled = YES;
当您需要停用按钮互动时,只需将其设置为NO
interactionEnabled = NO;
在按下按钮时触发的方法中,只需添加一个if条件检查以查看interactionEnabled
的状态,如下所示:
-(IBAction)fireOnButtonPress:(id)sender {
if(interactionEnabled) {
// do something
}
// otherwise ignore button press
}
这不会禁用该按钮,但会阻止用户在不需要时与其进行交互。
答案 4 :(得分:0)
你将一个自定义的UILabel作为UIBarbuttonItem(如何?看到这个post)而没有文本,它应该足够大,以覆盖你想要禁用的UIBarbuttonItem。它对我有用。
答案 5 :(得分:0)
对象 -
UIButton *barButton = [UIButton buttonWithType:UIButtonTypeCustom];
[barButton setImage:[UIImage imageNamed:@"image.png"] forState:UIControlStateNormal];
[barButton setImage:[UIImage imageNamed:@"image.png"] forState:UIControlStateDisabled];
barButton.frame = CGRectMake(10.0,10.0,50,50);
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithCustomView:aButton];
backButton.enabled = NO;
self.navigationItem.leftBarButtonItem = backButton;
Swift 4
对于按钮图片
let barButton = UIButton(type: .custom)
barButton.setImage(UIImage(named: "image.png"), for: .normal)
barButton.setImage(UIImage(named: "image.png"), for: .disabled)
barButton.frame = CGRect(x: 10.0, y: 10.0, width: 50, height: 50)
let backButton = UIBarButtonItem(customView: aButton)
backButton.isEnabled = false
navigationItem.leftBarButtonItem = backButton
按钮标题
let btnTitle = UIBarButtonItem(title: "Your Button title", style: .plain, target: nil, action:nil)
btnTitle.setTitleTextAttributes([NSAttributedStringKey.font: UIFont(name: "fontname", size: 14.0)!], for: .normal)
btnTitle.setTitleTextAttributes([NSAttributedStringKey.font: UIFont(name: "fontname", size: 14.0)!], for: .disabled)
btnTitle.isEnabled = false
self.navigationItem.leftBarButtonItems = [btnTitle]
答案 6 :(得分:-3)
你可以在这里找到答案。
在.h文件中:
IBOutlet UIBarButtonItem *button1;
在.m文件中:
[button1 setEnabled:FALSE];
在.h文件中创建UIBarButtonItem作为IBOutlet并在实现文件中访问,您可以使用UIBarButtonItem的问题 - “setEnabled”使其启用或禁用。
如果您需要更多帮助,请与我联系。