Как я могу отключить касание пользователя UIbarbutton без отключения? - PullRequest
5 голосов
/ 02 июня 2011

У меня есть элемент UiBarButton на моей панели инструментов. Мне нужно отключить взаимодействие с сенсорным пользователем в UiBarButton.у него нет setUserInteractionEnabled свойства.когда я его скрываю, нет надлежащей видимости. Кто-нибудь может сказать мне, как я могу отключить взаимодействие пользователя с сенсорной кнопкой UIbarbutton без ее отключения?

Ответы [ 7 ]

5 голосов
/ 11 октября 2013

Чтобы иметь заголовок в 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];
  ...
}
4 голосов
/ 26 сентября 2013

Вы можете сделать это:

[barButtonItem setTarget:nil];
[barButtonItem setAction:nil];

Кнопка выглядит активной, но она не получит никакого события касания.

2 голосов
/ 02 июня 2011

Вы всегда можете сделать:

[yourbutton removeTarget:nil 
                  action:NULL 
        forControlEvents:UIControlEventAllEvents]; 

Это удалит все действия и цели, связанные с кнопкой.

1 голос
/ 12 июля 2011

Создайте пользовательское свойство, связанное с вашей кнопкой.

Допустим, ваша кнопка запускает действие ниже:

-(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
}

Это не отключит кнопку, но предотвратит взаимодействие с пользователем, когда вы этого не хотите.

0 голосов
/ 24 мая 2018

Obj - c

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]
0 голосов
/ 07 марта 2012

Вы выделяете-инициализируете пользовательскую UILabel как UIBarbuttonItem (как? См. Эту запись ) без текста, и он должен быть достаточно большим, чтобы охватить UIBarbuttonItem, который вы хотите отключить. У меня это сработало.

0 голосов
/ 12 июля 2011

Вы можете найти свой ответ здесь.

В .h файле:

IBOutlet UIBarButtonItem *button1;

В .m файле:

[button1 setEnabled:FALSE];

Создайте UIBarButtonItem как IBOutlet в.h файл и доступ в файле реализации, и вы можете использовать проблему UIBarButtonItem - "setEnabled", чтобы включить или отключить его.

Дайте мне знать, если вам нужна дополнительная помощь.

...