2011-11-13 2 views
1

이벤트를 트리거하기 위해 UIBarButtonItem을 사용하고 있습니다. xcode4의 통합 InterfaceBuider를 사용하여 UIBarButtonItem을 만든 다음 단추를 내 View Controller의 메서드에 연결했습니다. 방법은 다음과 같습니다 UIBarButtonItem을 터치하면 touchesbegan을 감지하는 방법은 무엇입니까?

-(IBAction)NoteOnOff:(id)sender 
{ 
    UIButton *button = (UIButton*)sender; 

    /* now perform action */ 
} 

지금 내가 응용 프로그램의 MIDI 신디사이저 종류의 이벤트의 종류 noteoff/noteon을 트리거 할 때문에도/fingerup을 fingerdown 감지합니다.

1- 위의 방법으로 sender을 눌렀는지 확인하는 방법이 있습니까?

2

나는 touchesBegan을 UIBarButtonItem을 서브 클래스 구현하기 위해 노력하고 이런 식으로 touchesEnded :
@interface myUIBarButtonItem : UIBarButtonItem { 

} 

@end 

@implementation myUIBarButtonItem 

-(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ 
NSLog(@"touchesBegan"); 
NSLog(@"touches=%@,event=%@",touches,event); 
} 

-(void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{ 
NSLog(@"touchesEnded"); 
NSLog(@"touches=%@,event=%@",touches,event); 
} 

@end 

가 그럼 난 인터페이스 편집기하지만 운이 myUIBarButtonItem하는 UIBarButtonItem의 클래스를 변경합니다. 인터페이스 편집기에서 맞춤 클래스를 사용하는 올바른 방법입니까?

3 UIBarButtonItem이 UIResponder에서 상속되지 않으므로 어디에서 건지를 읽을 수 있습니다. 그렇다면 터치를 감지하고 이벤트를 만질 수있는 적절한 방법은 무엇입니까? 나는 주로 C/C++ 프로그래머이고 객관적인 C와 iphone 환경에 관한 지식은 꽤 제한되어 있습니다. UI 편집기를 사용하는 방법 만 알고 있으며 사용자 정의 UI를 만드는 방법을 알지 못하고이 편집기 없이도 사용할 수 있습니다.

결론 : 가능한 최저 지연으로 터치 다운/터치 업을 감지하는 가장 간단한 방법은 무엇입니까?

튜토리얼 또는 문서에 대한 모든 안내를 환영합니다.

감사합니다, 당신은 이런 식으로 작업을 수행 할 수 있습니다

답변

-2

바바 (UIBarButtonItem를 서브 클래 싱 할 필요) :

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

[button addTarget:self action:@selector(touchDown:) 
    forControlEvents:UIControlEventTouchDown]; 

- (void) touchUp:(id)sender { 
} 

- (void) touchDown:(id)sender { 
} 
+0

감사 마이클, 이것은 내가 필요 정확히 것 같습니다. 한 가지 방법은 IB에서 만들어진 이후로 '버튼'에 액세스하는 방법을 모르겠다는 것입니다. – Baba

+0

이 방법으로 viewcontroller.h에 IBOutlet을 선언하려고했습니다. IBOutlet UIBarButtonItem * myButton; 그런 다음 IB의 해당 코드 행에 연결 한 다음 viewdidload에서 [myButton addTarget ....]을 호출하지만 다음과 같은 런타임 오류가 발생합니다. - [UIBarButtonItem addTarget : action : forControlEvents :] : 인스턴스 *** 캐치되지 않은 예외 'NSInvalidArgumentException'으로 인해 응용 프로그램을 종료합니다. 이유 : '- [UIBarButtonItem addTarget : action : forControlEvents :] : 인식 할 수없는 선택자를 인스턴스로 보냄 *** 처음에 호출 스택 호출 : 무엇이 누락 되었습니까? 덕분에 – Baba

+5

addTarget : action : forControlEvents :가 UIControl에서 선언되고 UIBarButtonItem이 UIControl에서 상속되지 않기 때문입니다. – NJones

관련 문제