2011-06-02 81 views
2

我在我的Toolbar.i中有一個UiBarButton項目,需要關閉用戶在 UiBarButton中的觸摸交互。沒有setUserInteractionEnabled屬性。當我隱藏它時,沒有正確的可見性。任何人都可以告訴我,如何禁用UIbarbutton的用戶觸摸交互而不禁用它?如何禁用UIbarbutton的用戶觸摸而不禁用?

+0

你好克里斯蒂娜,你可以檢查你的答案,因爲我張貼在下面。使用UIBarButtonItem。 – AppAspect 2011-07-12 09:34:52

回答

2

你總是可以做到:

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

,將刪除與該按鈕相關聯的所有行動和目標。

+4

沒有removeTarget:nil action:NULL forControlEvents:UIControlEventAllEvents];方法爲uibarbutton – Christina 2011-06-02 14:47:45

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 
} 

這不會禁用按鈕,但它將阻止用戶在你不想要的時候與之交互。

-3

你可以在這裏找到你的答案。

在.h文件中:

IBOutlet UIBarButtonItem *button1; 

在.m文件:

[button1 setEnabled:FALSE]; 

在.h文件中並獲得在實現文件中創建的UIBarButtonItem爲IBOutlet中,你可以使用的problerty UIBarButtonItem - 「setEnabled」使其啓用或禁用。

讓我知道你是否需要更多幫助。

+1

他特別說「不禁用它」 – Lance 2013-10-11 17:17:13

+0

UIBarButtonItem沒有userInteractionEnabled屬性。 – Lance 2013-10-12 14:18:56

0

您將alloc-init作爲UIBarbuttonItem(如何?請參閱此post)不帶文本的自定義UILabel,它應該足夠大以覆蓋要禁用的UIBarbuttonItem。它爲我工作。

4

你可以這樣做:

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

按鈕看起來啓用,但不會接收任何觸摸事件。

+0

謝謝,我節省了一些時間。我認爲只設置爲零的動作也會禁用它。 – 2017-02-16 09:10:50

4

要在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]; 
    ... 
}