2013-07-05 2 views
1

버튼처럼 작동하는 UIView 클래스를 만들려고합니다. 나는 그것을 완전히 프로그래밍 방식으로하고 싶다. 나는 버튼을 표시 할 수 있지만 제대로 클릭하지는 않습니다. 내보기 제어기 구현 파일에서UIView 하위 클래스의 대리자 및 제스처 인식기

- (void)handlePress:(UILongPressGestureRecognizer *)sender{ 
    if(sender.state == UIGestureRecognizerStateBegan){ 
     NSLog(@"in handlePress"); 
    } 
} 

I 가지고 :

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    self.button = [[buttonclass alloc] initButton]; 
    [self.view addSubview: self.button]; 

    UILongPressGestureRecognizer *singlePress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handlePress:)]; 
    [self.button.buttonView addGestureRecognizer:singlePress]; 
} 

(버튼의 인스턴스 변수 인 제 클래스 구현 파일에서

난 다음뿐만 아니라 초기화 방법을 클래스 버튼 클래스와 buttonView는 버튼의 서브 뷰일뿐입니다)

저는 문제가 줄 안에 있는지 꽤 확신합니다 :

UILongPressGestureRecognizer *singlePress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handlePress:)]; 
    [self.button.buttonView addGestureRecognizer:singlePress]; 

이 줄이 단추 초기화 함수 또는보기 컨트롤러 구현 파일 내에 있어야하는지 확실하지 않습니다. 다음 행을 추가해야합니까?

singlePress.delegate = self; 

은 그 줄을 추가 시도하지만 난 어디에 넣어 모르는 오류가 delegateself (가) 같은 종류 아니라는 것을 말하고있다. 그럼에도 불구하고 동작에 GestureRecognizer를 연결하려고하거나 UIView 단추에 GestureRecognizer를 연결하려고 할 때 무언가 잘못되었습니다.

도움이 될 것입니다. 감사합니다. 좋은 하루 되세요.

+0

입니까? – JiuJitsuCoder

+0

아니요 UIView의 하위 클래스입니다. –

+0

아래의 @ Apurv의 대답을 참조하십시오. 그 이유는 이것이 내가 말하는 것이기도하기 때문입니다. 또한 UIButton 또는 UIControl의 서브 클래 싱을 살펴보고 필요한 메서드를 재정의하는 것이 좋습니다. 모든 것을 손으로 코딩하지 않고도 많은 기능을 사용할 수 있습니다. – JiuJitsuCoder

답변

0

제스처를 단추에 추가하고 단추의 하위보기에는 추가하지 않아야합니다.

UILongPressGestureRecognizer *singlePress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handlePress:)]; 
[self.button addGestureRecognizer:singlePress]; 

행 다음에 추가 할 필요가 없습니다 : 또한

singlePress.delegate = self; 
+0

와우, 정말 고마워. 하하, 나는 단지 그것이 층 문제 일 뿐이라고 믿을 수 없다. 좋은 하루 되세요! –

0

그렇지 않으면 당신은 당신이 청소하는 것을 잊지 경우에 어쩌면 메모리 누수를 얻을 것이다 Button 객체를 해제하는 것을 잊지 말라 ... 이 클래스는있는 UIButton의 서브 클래스

[super viewDidLoad]; 

self.button = [[buttonclass alloc] initButton]; 
[self.view addSubview: self.button]; 
[self.button release]; 

관련