2014-01-25 1 views
0

Я использую UIToolBar и добавил UIBarButtonItem. Когда я нажимаю кнопку, она ничего не делает. Он не отвечает на событие действия. Это мой код:UIBarButtonItem не отвечает на событие действия

UIToolbar *toolBar = [[UIToolbar alloc] initWithFrame:CGRectMake(x, y, width, toolBarHeight)]; 
    [toolBar setBarStyle:UIBarStyleBlackTranslucent]; 
    UIBarButtonItem *barButtonDone = [[UIBarButtonItem alloc] initWithTitle:@"Done" 
                     style:UIBarButtonItemStyleBordered target:self action:@selector(changeText:)]; 
    toolBar.items = [[NSArray alloc] initWithObjects:barButtonDone,nil]; 
    barButtonDone.tintColor=[UIColor blackColor]; 
    [self.view addSubview:toolBar]; 
+0

Вы говорите, что метод 'changeText:' этого класса не вызывается при нажатии кнопки «Готово»? – rmaddy

+0

Ничего плохого в этом коде. Проверьте функциональность 'changeText:', как предлагает @rmaddy. Также убедитесь, что вы также не добавляете некоторые другие подпрограммы в 'self.view', которые закрывают панель инструментов. – matt

+0

Я сначала добавляю сборщик и панель инструментов над ним, и это мой метод changeText: - (void) changeText: (id) отправитель { int tag = [тэг отправителя]; если (обычныйPicker) { [обычныйPicker removeFromSuperview]; } else { [datePicker removeFromSuperview]; } } –

ответ

0

Попробуйте это и посмотрите, поможет ли это. Снова ваш код выглядит отлично.

// create an array for the buttons 
NSMutableArray* BarbuttonsArray = [[NSMutableArray alloc] initWithCapacity:1]; 

UIBarButtonItem *barButtonDone = [[UIBarButtonItem alloc] initWithTitle:@"Done" 
                   style:UIBarButtonItemStyleBordered target:self action:@selector(changeText:)]; 

barButtonDone.style = UIBarButtonItemStyleBordered; 
[BarbuttonsArray addObject:barButtonDone]; 

[toolbar setItems:BarbuttonsArray animated:YES]; 

Я буквально скопировал и вставлял ваш код в мой тестовый проект, и это то, что я получаю. Единственное изменение, которое я сделал, это имя метода

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 

    UIToolbar *toolBar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)]; 
    [toolBar setBarStyle:UIBarStyleDefault]; 
    UIBarButtonItem *barButtonDone = [[UIBarButtonItem alloc] initWithTitle:@"Done" 
                     style:UIBarButtonItemStyleBordered target:self action:@selector(changeText)]; 
    toolBar.items = [[NSArray alloc] initWithObjects:barButtonDone,nil]; 
    barButtonDone.tintColor=[UIColor blackColor]; 
    [self.view addSubview:toolBar]; 

} 

-(IBAction) changeText 
{ 
    NSLog(@"changeText ..."); 
} 

2014-01-25 13:59:15.882 001-test-proj[15596:a0b] changeText ... 
+0

проблема заключается в том, когда я нажимаю кнопку, она не переходит в нажатое состояние, как вы видите, когда нажимаете кнопку. Я думаю, что это проблема. –

+0

См. Мой обновленный ответ. Если вы скопируете и вставьте это точно, и это не сработает, в вашем проекте будет что-то еще. –

+0

@DhruvJindal Ну, конечно, в кнопках со стрелками iOS 7 по умолчанию нет особого нажатия. – matt

Смежные вопросы