[ios] UILabel에서 터치 이벤트를 처리하고 IBAction에 연결
좋아, 그래서 UILabel
“시작하려면 누르기”라는 몇 가지 기본 텍스트를 표시하는 인터페이스 빌더를 만들었습니다.
사용자 UILabel
가 IBAction 메서드를 실행하고 싶습니다 :
-(IBAction)next;
레이블의 텍스트를 업데이트하여 새로운 것을 말합니다.
이렇게하면 내 방법에서 내 레이블로 연결을 드래그 한 다음 버튼처럼 내부 터치 업을 선택할 수 있다면 정말 편리 할 것입니다. 그러나 아아, 시가는 없습니다.
그래서 어쨌든, 내 질문은 UILabel
이것이 작동 하도록 하위 클래스 를 만들어야합니까? 또는 레이블 위로 버튼을 드래그하여 0 % 불투명하게 만들 수있는 방법이 있습니까? 아니면 내가 놓친 더 간단한 해결책이 있습니까?
답변
확인 해봐:
UILabel *label = ...
label.userInteractionEnabled = YES;
UITapGestureRecognizer *tapGesture =
[[UITapGestureRecognizer alloc] initWithTarget:self
action:@selector(labelTap)];
[label addGestureRecognizer:tapGesture];
트릭은 사용자 상호 작용을 활성화하는 것입니다.
답변
UILabel은 UIResponder에서 상속 된 UIView에서 상속됩니다. 모든 UIresponder 객체는 터치 이벤트를 처리 할 수 있습니다. 따라서 (UIlabel 포함) 뷰에 대해 아는 클래스 파일에서 다음을 구현하십시오.
-(void)touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event;
인터페이스 빌더에서 UILabel의 태그 값을 설정하십시오. touchesBegan 메서드에서 터치가 발생하면 태그가 속한 뷰의 태그 값을 확인합니다.
UITouch *touch = [touches anyObject];
if(touch.view.tag == MY_TAG_VAL)
label.text = @"new text";
IBOutlet 접두사로 UILabel 인스턴스 변수를 선언하여 인터페이스 빌더의 UILabel 객체와 클래스 파일의 코드를 연결합니다.
IBOutlet UILabel *label;
그런 다음 인터페이스 빌더에서 연결할 수 있습니다.
답변
UIButton을 사용하여 투명하게 만들 수 있습니다 (예 : 이미지가없는 사용자 정의 유형). UILabel을 추가 할 수 있습니다 (중앙). 그런 다음 일반 버튼 이벤트를 연결합니다.
답변
스위프트 3
IBOutlet이 있습니다.
@IBOutlet var label: UILabel!
사용자 상호 작용을 활성화하고 제스처 인식기를 추가합니다.
label.isUserInteractionEnabled = true
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(userDidTapLabel(tapGestureRecognizer:)))
label.addGestureRecognizer(tapGesture)
마지막으로 탭 처리
func userDidTapLabel(tapGestureRecognizer: UITapGestureRecognizer) {
// Your code goes here
}