2009-11-13 3 views
4

Я уверен, что я с видом очевидным, как я получил бесчисленные рабочие кнопки ... но ... по какой-то причине это один не сотрудничает ...Почему мой UIButton не отвечает на прикосновения?

Я добавил UIButton (округленно Rect) к подклассу UIView (DialogView), который является подпунктом представления моего контроллера представления. Это подобие создается почти полностью в IB. Я подключил кнопку до (IBAction)okButtonPressed:(id)sender в IB до Touch Up Inside и создал соответствующий метод в DialogView. Однако, когда я прикасаюсь к этой кнопке, это не вызывает метод. userInteractionEnabled is true для просмотра VC, DialogViewиUIButton.

Думаю, что initWithCoder должен был сделать некоторые манипуляции с фреймами или что-то, что я добавил, чтобы успешно войти в консоль.

- (id)initWithCoder:(NSCoder *)decoder { 
    if (self = [super initWithCoder:decoder]) { 
     NSLog(@"DialogView initWithCoder called"); 
    } 
    return self; 
} 

В доразведки Я телеграфировал вверх по IBOutlet к кнопке, а затем, если я пытаюсь изменить titleLabel от контроллера представления я замечаю, что он получить строго-й усеченным. Текст по умолчанию «Press Me!», установленный в IB, отображается хорошо, когда вид сначала рисуется. Но если изменить текст ...

self.DialogView.okButton.titleLabel.text = @"Not Working"; 

... он получает обрезается до "N ..."

Незнайка, если это связано. Вероятно ...

Кто-нибудь видит, что я здесь испортил?

Edit (добавление кода, связанного с показывая UIButton):

С View Controller:

self.DialogView = [[[NSBundle mainBundle] loadNibNamed:@"DialogView" owner:self options:nil] objectAtIndex:0];; 
self.DialogView.myVC = self; 
self.DialogView.backgroundColor = [UIColor clearColor]; 
self.DialogView.center = CGPointMake(self.view.frame.size.width/2, self.view.frame.size.height/2); 
self.DialogView.nameLabel.text = loan.fullName; 
self.DialogView.noteLabel.text = loan.summaryOfLoan; 
self.DialogView.amountLabel.text = [currencyFormatter stringFromNumber:loan.originalAmount]; 
self.DialogView.alpha = 0.0; 
[self.view addSubview:DialogView]; 

В UILabels все отображения, как и ожидалось. Как проблема UIButton. Я вижу это, я просто не могу с ним взаимодействовать!?!

интерфейс DialogView в:

@class MyViewController; 

@interface DialogView : UIView { 
    IBOutlet UILabel *nameLabel, *noteLabel, *amountLabel; 
    IBOutlet UIImageView *arrowView; 
    IBOutlet UIButton *okButton; 
    MyViewController *myVC; 
} 

@property (nonatomic, retain) UILabel *nameLabel, *noteLabel, *amountLabel; 
@property (nonatomic, retain) UIImageView *arrowView; 
@property (nonatomic, assign) MyViewController *myVC; 
@property (nonatomic, retain) UIButton *okButton; 

- (IBAction)okButtonPressed:(id)sender; 

@end 

И реализация DialogView в:

#import "DialogView.h" 
#import "MyViewController.h" 

@implementation DialogView 

@synthesize nameLabel, noteLabel, amountLabel, arrowView, okButton; 
@synthesize myVC; 

- (void)dealloc { 
    [nameLabel release]; 
    [noteLabel release]; 
    [amountLabel release]; 
    [arrowView release]; 
    [okButton release]; 
    [super dealloc]; 
} 

- (id)initWithFrame:(CGRect)frame { 
    if (self = [super initWithFrame:frame]) { 
     // Initialization code 
    } 
    return self; 
} 

- (id)initWithCoder:(NSCoder *)decoder { 
    if (self = [super initWithCoder:decoder]) { 
     NSLog(@"DialogView initWithCoder called"); 
    } 
    return self; 
} 

- (IBAction)okButtonPressed:(id)sender { 
    NSLog(@"pressed DialogView OK button"); 
    [self.myVC.navigationController popViewControllerAnimated:YES]; 
} 

- (void)drawRect:(CGRect)rect { 
    // Drawing code 
} 


@end 
+0

Является ли 'Диалог' отображать сохраненную собственность на' MyViewController'? –

+0

Исправление, которое должно читать «Является ли' DialogView' сохраненным свойством на 'MyViewController'? –

+0

О, и каковы границы' self.DialogView' после того, как вы установили его свойство 'center'? –

ответ

8

Я думал, что мы должны использовать -setTitle: forState: чтобы установить название кнопки?

Другая мысль, вы проверили, что рамка кнопки не является CGRectZero? И, кстати, все кадры для представления в иерархии? И проверить, что один супервизор в иерархии не отключен от взаимодействия с пользователем? И, я думаю, imageView не отвечает на касания, у вас есть один в коде?

+2

, что изображениеView вещь сложно. Если вы добавите UIButton в качестве подпункта UIImageView, ваша кнопка будет отключена независимо от того, сколько раз вы устанавливаете userInteractionEnabled. –

0

Есть ли у вас, возможно, есть две кнопки на верхней части друг с другом? Измените окно проекта IB на подробный вид и посмотрите, есть ли в вашем представлении больше кнопок, чем вы ожидаете. Возможно, вы подключили кнопку, которая на самом деле не получает прессу, которую вы ожидаете.

+0

Я нахожусь в подробном просмотре ... и нет. только один UIButton. 3 UILabels ... но они неактуальны (и работают нормально). – Meltemi

+0

Вы упомянули " почти полностью создан в IB ». Можете ли вы рассказать об этом? Какую часть нет в IB? –

+0

ОК. Я разместил весь код, связанный с этой надменной кнопкой. – Meltemi

3

У меня была более или менее та же проблема, и я обнаружил, что у моего содержащего представления не было «User Interaction Enabled».

Надеюсь, это поможет.

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