View 터치를 배타 제어하자
4966 단어 iOSSwiftObjective-C
소개
비교적 중요하다고 생각되는 버튼 동시 누름 등을 막는 배타 제어에 사용하는 속성 "exclusiveTouch".
이전에 드디어 사용할 기회가 있었다(사용한 적은 있었지만, 완전히 잊고 있었을 가능성도 있습니다만.) 때문에, 기사로 해 보기로 했습니다.
exclusiveTouch란?
빙글빙글 보면, UIButton에서 사용하는 예가 많이 나옵니다만, 실은 "exclusiveTouch"는 UIView 클래스의 프로퍼티입니다.
Swift라면 true, Obj-C라면 YES를 대입하면 동시 누르기를 금지할 수 있습니다.
nohirapView.exclusiveTouch = true
nohirapView.exclusiveTouch = YES;
이전에 사용했을 때
예
UIButton 대신 UICollectionView 헤더와 셀에서 사용했습니다.
상당히 변경하거나 끝을 접었습니다만, 이하의 느낌입니다.
//MARK:- UICollectionViewDataSource
extension NohirapViewController: UICollectionViewDataSource {
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCellWithReuseIdentifier("NohirapCollectionViewCell", forIndexPath: indexPath) as! NohirapCollectionViewCell
// この辺りでセルのアイテムをセットする
cell.exclusiveTouch = true
return cell
}
func collectionView(collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, atIndexPath indexPath: NSIndexPath) -> UICollectionReusableView {
if kind == UICollectionElementKindSectionHeader {
if let bannerView = collectionView.dequeueReusableSupplementaryViewOfKind(kind, withReuseIdentifier: "NohirapBannerCollectionViewCell", forIndexPath: indexPath) as? NohirapBannerCollectionViewCell {
bannerView.exclusiveTouch = true
return bannerView
}
}
// この辺りで色々やる
}
}
왜 사용했는가
실은, 지금 종사하고 있는 안건의 테스트 팀이 찾아낸 버그가 계기였습니다.
솔직히, collectionView의 헤더나 셀의 동시 누르는 상정하고 있지 않았습니다만, 유저에게는 여러분이 계신다고 생각하기 때문에, 이러한 뒷 기술적인 조작에 대응할 때 어쩐지 "exclusiveTouch"는 편리하다 하는 것 같아요.
요약
exclusiveTouch는 UIButton 및 UICollectionViewCell과 같은 UIView의 하위 클래스를 동시에 누르는 것을 금지하는 데 매우 유용합니다.
동시 밀기를 허용하는 설계 이외에서는 자세하게 설정해 두면 좋다고 느꼈습니다.
Reference
이 문제에 관하여(View 터치를 배타 제어하자), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/nohirap/items/2f60d9bebc4c33469336텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)