3

내가있는 UIButton ""하고 버튼 (ai.center = bn.center) 위에있는 UIActivityIndicator " 인공 지능"가 클릭 방지 할 수 있습니다.동작 표시 인식

는만큼 으로 내가 인공 지능의 프레임 아래에 있지만 내가 할 수있는 범위에서 버튼을 누를 수 없습니다, 표시 및 애니 메이팅이다 인공 지능.

내가 인공 지능 또는 "이 인공 지능"을 클릭 할 수있는 현명한 방법이에 GestureRecognition를 추가해야합니까.

친절하게 제공합니다. $의 H @의 rky

답변

2

ai.userInteractionEnabled = NO;을 간단하게 설정할 수 있습니까? 어쨌든 활성화 표시기에서 활성화 된 것은 놀랍습니다. 표준 구성 요소입니까, 아니면 하위 클래스를 만들었습니까?

제쳐두고, 다른보기, 특히 무언가가 "사용 중임"을 나타 내기 위해 사용되는 대화 형 요소를 갖는 것은 UI 디자인이 좋지 않지만 클릭 가능한 축소판 이미지의 예에서, 그것은 말이되는 것 같습니다.

+0

내 UID 디자인으로. 나는 그 (것)들에 엄지 손톱을 가진 단추의 세트가 인터넷에서 짐이었다. 그리고이 과정이 진행되는 동안 인공 지능이 애니메이션으로 나타나지만 버튼을 눌러 전체 화면 이미지를 볼 수 있어야합니다. 버튼 페이지는 단지 미리보기 일뿐입니다. 표준 UIActivityIndicatorView이며 사용할 수있게되어 놀랍습니다. 기본적으로 보인다. 이제는 잘 작동했습니다. 고마워. – Sharky

+1

그런 의미가 있습니다. 나는 내 대답을 고쳐 줄거야! – jrturton

0

당신은 부모보기에서 UIView의 방법을

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event 

를 오버라이드 (override) 할 필요가있다. 히트가 버튼 안에 있으면 버튼을 반환하고, 그렇지 않으면 nil을 반환합니다. withEvent : 메시지를 각 서브 뷰에 서브 뷰는 터치 이벤트를 수신해야하는 결정

이 방법은 pointInside를 전송하여 뷰 계층을 통과 :이이 방법에 대한 토론의 일부입니다. pointInside : withEvent : 이 YES를 반환하면 하위 뷰의 계층 구조가 가로 지릅니다. 그렇지 않으면보기 계층의 분기가 무시됩니다. 이 메소드를 직접 호출 할 필요는 거의 없지만 터치 이벤트를 숨겨서 하위보기의 터치 이벤트를 숨길 수 있습니다.

편집 :

당신이 대대와 인공 지능을 포함하는 UIView 하위이 말, 당신은 구현할 수있는이

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event { 
    if (CGRectContainsPoint(bn.frame, point)) { 
     return bn; 
    } 
    return nil; 
} 

당신의 버튼은 터치 이벤트를 얻을 것이다 그런 식으로 같은 방법 (만약 그들이 아무거나가 그것의 정상에다는 것을 있건 없건간에 그것의 구조 안에). 당신은 다른 작업을 수행 할 필요가 없습니다.

+0

거의 모든 클래스에서이 메서드를 구현했지만 결코 호출되지 않았습니다. 어쩌면 몇 가지 추가 작업을해야합니까? – Sharky

+0

부모보기에서만 구현하고, 호출 된 것을 확인하고 터치가 단추 위에 있는지 여부를 확인해야합니다. – jbat100

+0

다시 시작하겠습니다. 내 버튼은 "self.view"(UIView)의 하위 뷰입니다. 따라서 "self.view"는 상위 뷰 (= superview)입니다. 그래서 UIView 하위 메서드 및 메서드를 덮어 쓰려면이 "customView"내 self.view 같이 사용해야합니까? – Sharky

0

사용하여 다음과 같은 물건 :

먼저, 다음과 같은 방법으로 조작 UIActivityIndicator에 대한 하위 클래스를 만들 : 그 후

@interface MyActivityIndicator: UIActivityIndicator 
@end 

@implementation MyActivityIndicator 

- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event { 
    return NO; 
} 

@end 

, 사방 대신 UIActivityIndicator의 프로젝트에서 사용 MyActivityIndicator (NIB 파일 또는 귀하의 코드는 어디서 만드 느냐에 달려 있습니다)

+0

나는 이것이 효과가있을 것이라고 생각하지만 "jrturton 's"대답은 훨씬 쉽습니다. – Sharky