2013-02-24 8 views
7

한 번만 누르면 다른 UIView의 팝업이 표시되는 단추를 만들려고합니다.프로그래밍 방식으로 UIButton 동작을 코드화합니다.

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    self.hard1 = [UIButton buttonWithType:UIButtonTypeCustom]; 
    [self.hard1 setFrame:CGRectMake(884, 524, 105, 60)]; // set the x,y,width and height based on your specs 
    UIImage *buttonImage = [UIImage imageNamed:@"green.jpg"]; 
    hard1.layer.cornerRadius = 10; 
    hard1.clipsToBounds = YES; 
    [hard1 addTarget: self 
       action: @selector(buttonClicked:) 
    forControlEvents: UIControlEventTouchUpInside]; 
    [self.hard1 setImage:buttonImage forState:UIControlStateNormal]; 
    [self.view addSubview:self.hard1]; 
} 

을 아래로 더욱 :이를 테스트하기 위해, 내있는 viewDidLoad 섹션에 다음 코드가 나는 버튼을 쳤을 때

- (IBAction) buttonClicked: (id)sender 
{ 
    NSLog(@"Tap"); 
} 

그러나, 콘솔 '탭'을 기록하지 않습니다. 어떤 아이디어?

답변

12

코드의 세 가지 라인을 조심해야 ... 작동하지 않을 것입니다 : 당신은 자신을 누락

hard1.layer.cornerRadius = 10; 
hard1.clipsToBounds = YES; 
[hard1 addTarget: self 
      action: @selector(buttonClicked:) 
forControlEvents: UIControlEventTouchUpInside]; 

. 셋 모두에서. 그들은해야합니다 : 당신이 프로그래밍 방식으로 만드는 경우

self.hard1.layer.cornerRadius = 10; 
self.hard1.clipsToBounds = YES; 
[self.hard1 addTarget: self 
      action: @selector(buttonClicked:) 
forControlEvents: UIControlEventTouchUpInside]; 

는 또한, 그것이 IBAction를 (IB 인터페이스 빌더를 의미하고 이것은 인터페이스 빌더에서 생성되지 않음)이어야한다.

+0

아 아내. 고마워요! –

+1

이제 나는 그것에 관해서. 속성을 만들 때 synthesize에서 다음을 수행하십시오 : @synthesize hard1 = _hard1; "hard1"속성은이 속성을 참조하면 작동하지 않습니다. 그것은 self.hard1 또는 _hard1입니다 (후자는 setter 메서드에서만 사용됩니다). – Odrakir

+0

덕분에 많은 도움을 받았습니다. –

0

이벤트 응답자를 buttonClicked으로 설정했지만 IBActionbuttonTap을 정의했습니다. 이것은 분명히

그것은

[hard1 addTarget: self 
       action: @selector(buttonTap:) 
    forControlEvents: UIControlEventTouchUpInside]; 
+0

self.hard1을 교체합니다. 내 실제 코드는 위에서 편집했지만 여전히 작동하지 않습니다. –

3
self.hard1 = [UIButton buttonWithType:UIButtonTypeCustom]; 


[hard1 addTarget: self 
       action: @selector(buttonClicked:) forControlEvents: UIControlEventTouchUpInside]; 

은 1 치즈 내가 오타를 만든

관련 문제