2013-12-07 4 views
0

Я знаю, что этот вопрос задавался много раз, но я не нашел решения для своей проблемы. Я не новичок в iOS, и это должно быть довольно тривиально, но это сводит меня с ума и безумие :). Ok У меня есть класс C, который является подклассом UIViewController. В его зрения есть UIScrollView и в этой точке зрения прокрутки я ставлю класс В и А также подклассы UIViewController, и я делаю это так:Селектор UIButton не звонил, независимо от того, что я делаю

a = [[A alloc] initWithNibName:@"A" bundle:nil]; 
[a setDelegate:self]; 
[self addChildViewController:a]; 
[a.view setFrame:CGRectMake(2*vwMainScroller.frame.size.width, 0, a.view.frame.size.width, a.view.frame.size.height)]; 
[vwMainScroller addSubview:a.view]; 

b = [[B alloc] initWithNibName:@"B" bundle:nil]; 
[b setDelegate:self]; 
[self addChildViewController:b]; 
[b.view setFrame:CGRectMake(vwMainScroller.frame.size.width, 0, b.view.frame.size.width, speedScreen.view.frame.size.height)]; 
[vwMainScroller addSubview:b.view]; 

Оба класса А и класса B имеют кнопки на их мнения добавлены программно в viewDidLoad метод как это:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    UIButton *btnChangeColor = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 200, 460)]; 
    [btnChangeColor addTarget:self action:@selector(Btn) forControlEvents:UIControlEventTouchUpInside]; 
    [self.view addSubview:btnChangeColor]; 
} 

-(void)Btn 
{ 
    NSLog(@"I am the selector and I have been called"); 
} 

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

  • положить кнопки на xibs
  • Обеспечение взаимодействия пользователя для каждого представления в моем коде - это был уже включен -> не помогло
  • кнопки рисования, чтобы увидеть, если они находятся там, где они должны быть -> они были
  • перезагружать компьютер и Xcode
  • работает на устройстве и симулятором

Ничто не помогло , всегда одно и то же, кнопка работает на классе B, но не на классе A, после того как я попытался добавить некоторые другие кнопки в IB класса A, после того как узнал, что они также не называют их селекторами, я проверил поле «Показывает» затрагивает подсветку "и угадывает, что, они не светились, когда я коснулся их. Поэтому, пожалуйста, я вижу, что что-то ест мои события касания, но просто не имеет никаких идей, как действовать при отладке этого вопроса. Пожалуйста, помогите мне:) ...

+0

Возможно, некоторые или все рамки кнопки находятся вне рамки родителя. – Anna

+0

Вы уверены, что кнопки не 'nil' в' viewDidLoad'? Это первое, что вы должны проверить. – Sulthan

ответ

-1

Хорошо, перестань думать, потому что это то, что нужно сделать, чтобы решить эту проблему. Я перестал думать и создал новый класс «Anew», скопировал весь код из класса A, создал точно такой же xib, скопировав элементы из A.xib, удалил класс A и реализовал Anew точно так же, как и с классом A. И теперь все работает так, как должно. Таким образом, ответ - когда U тратит 4 часа на попытку решить что-то столь же тривиальное, как и это, и пробовал все возможные подходы, которые U может себе представить, а другие предложили, и ничего не помогает, настало время перестать думать и начать удалять причину проблемы вероятно, глубже, чем U может достичь ...

+0

Это означает, что вы упустили что-то очень простое. – Sulthan

0

Попробуйте установить vwMainScroller.delaysContentTouches = Yes на ваш вид прокрутки.

Добавить

[a.view setUserInteractionEnabled:YES]; 

и

[b.view setUserInteractionEnabled:YES]; 

, прежде чем добавить его в качестве подвида к вашему Scrollview, если это не поможет настроить ваш контроллер представления в качестве делегата от вашего UIScrollView и добавить это:

-(BOOL)touchesShouldCancelInContentView:(UIView *)view 
{ 
    return ![view isKindOfClass:[UIButton class]]; 
} 
+0

Это уже было, без помощи, я попробовал ти отключить его, снова ничего ... – AntonijoDev

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