프로그래밍 방식으로 많은 UI 요소를 생성하고 있습니다. 50 UILabels라고합시다. 라벨 속성에 액세스하는 적절한 방법은 무엇입니까? 지금은 '보낸 사람'을 통해 [하위 뷰] 배열 얻을 라벨 속성에서 각 레이블 및 다음 검색 라벨에 태그를 추가 해요 : 몇 가지 문제가 우리 경우가 있기 때문에 가장 우아한 방법프로그래밍 방식으로 생성 된 UI 요소 참조하기
func buttonTapped(sender: UIButton) {
for subview in containerView.subviews {
if let label = subview as? UILabel, label.tag == sender.tag {
// do stuff
}
}
}
확실하지 라벨을 버튼으로 변경하십시오.
func createButton() {
let button = UIButton(frame: CGRect(origin: ...,
size: ...))
button.addTarget(self, action: #selector(buttonTapped(sender:)), for: .touchUpInside)
let longTap = UILongPressGestureRecognizer(target: self, action: #selector(disableButton(sender:)))
longTap.minimumPressDuration = 1
button.addGestureRecognizer(longTap)
.......
containerView.addSubview(button)
}
을 그리고 송신자가 UILongPressGestureRecognizer 때문에 지금은, disableButton (보낸 사람 : 방법 '보낸 사람'을 통해 속성에 액세스 할 수 없습니다
말할 수 있습니다.
라벨에 대해서는 작동하지만 버튼에 대해서는 작동하지 않는 것처럼 작동합니다. 는 당신이 당신의 라벨
yourLbl.isUserInteractionEnabled = true
를 만들 때
하지만 긴 탭은 어떨까요? 내가 만지면 아무런 문제가 없습니다 – drywet
긴 보도 자료 [long press] (https://stackoverflow.com/questions/45243947/uilabel-long-press-gesture-for-menu-item-of-uimenucontroller)에서이 링크를 확인하십시오. –