2014-02-06 6 views
0
backButton = [UIButton buttonWithType:UIButtonTypeCustom]; 

[backButton addTarget:self action:@selector(gotoAmphorasViewController) forControlEvents:UIControlEventTouchUpInside]; 

[backButton setFrame:CGRectMake(0.0f,0.0f, 44,44)]; 

내가 직면 한 문제는 버튼의 크기가 44*44이긴하지만, 버튼이 아무 곳에 나 두드리면 버튼이 작동한다는 것입니다.네비게이션 바 커스텀 버튼

+0

왜 그렇게 나쁜가요? 버튼을 누르기 만하면 쉽게 여유를 얻을 수 있습니다. – Mika

+0

나는 그것이 나쁘지 않다는 것을 말하지 않고있다. 나는 그것에 대해 전혀 몰랐다. 그래서 나는 그것이 버그라고 생각했다. 감사합니다 @ mMikael – Abhishek

답변

1

벨로우즈 코드를 시도하십시오 : 그 제대로

- (void)viewDidLoad { 
    [super viewDidLoad]; 
UIImage *buttonImage = [UIImage imageNamed:@"back.png"]; 

    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 

    [button setImage:buttonImage forState:UIControlStateNormal]; 


    button.frame = CGRectMake(0, 0, buttonImage.size.width, buttonImage.size.height); 

    [button addTarget:self action:@selector(back) forControlEvents:UIControlEventTouchUpInside]; 

    UIBarButtonItem *customBarItem = [[UIBarButtonItem alloc] initWithCustomView:button]; 

    self.navigationItem.leftBarButtonItem = customBarItem; 
    [customBarItem release]; 



} 

-(void)back { 

[self.navigationController popViewControllerAnimated:YES]; 
} 
작업은
1

버그가 아닙니다. 이는 기본 동작입니다. iPhone의 경우 탐색 바 버튼의 경우 터치 감지가 프레임이 아닌 확장됩니다. 다른 응용 프로그램을 살펴보십시오. 버튼을 더 가볍게 누르기 만하면 버튼이 발사됩니다.

1

그것은 의도 된 행동, 당신이 정말로 터치의 영역을 제한하려면, 당신은 UIView의 내부의 버튼을 래핑 할 수있다 :

UIView *buttonContainer = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 44, 44)]; 
[buttonContainer addSubview:button]; 
_barButton = [[UIBarButtonItem alloc] initWithCustomView:buttonContainer]; 
+0

감사합니다 남자 :) 나는 당신의 접근 방식을 좋아합니다. – Abhishek

관련 문제