나는 그것이 iOS에서 가능한 것으로 Mac에서 IB에서이 일을 방법이 없습니다 두려워 :
UIKit과 AppKit의이 - 많은 관련 유사하지만이 - 두 개의 매우 다른 짐승 . AppKit은 1990 년대 (어쩌면 1980 년대 후반)에 약간의 지점에서 보여지는 유산을 가지고 있습니다. (저는 당신, NSCell을보고 있습니다) UIKit은 약 20 년의 경험을 바탕으로 설계되었습니다. AppKit.
UIControl
의 조치가 호출 될 때 쉽게 알 수 있지만 (NSControl
) 다른 하나의 조치가 전송되도록 지정할 수 있습니다.
-[NSButtonCell stopTracking:at:inView:mouseIsUp:]
또는 -[NSButton mouseDown:]
및 -[NSButton mouseUp:]
을 덮어 쓰지 않으려면 원하는 조치를 취할 수있는 가장 쉬운 방법은 버튼을 계속해서 작동하도록 설정하는 것입니다. 이것은 IB의 뼈일 수 있습니다 ("Control"카테고리의 "Attributes"속성 검사기에서).
- (IBAction)toggleIt:(id)sender {
CALayer *descriptionLayer = [myDescription layer];
[descriptionLayer setHidden:NO]; // (ab-)use implicit animation
[descriptionlayer performSelector:@selector(setHidden:) withObject:@"" afterDelay:.1];
}
작동 원리 :의 CALayer의
은 "숨겨진"-property을
다음 것은 당신의 설명을 레이어 백업하고 이런 방식으로 액션 메소드를 다시 작성하는 것 애니메이션 가능하고 따라서 변경하면 암시 적 애니메이션이 생깁니다. Objective C가 C이기 때문에 0x0
이 아닌 것은 YES
으로 해석되며 세 번째 줄이 표시됩니다. 빈 문자열은 분명히 0x0
이 아니므로이 작업이 반환 된 직후 숨기기 위해 레이어가 호출됩니다. 그러나 CATransitions은 점진적으로 진행되어 중간 과정에서 업데이트 될 수 있기 때문에 더 이상 동작이 트리거되지 않을 때 (즉, 버튼이 더 이상 눌러지지 않은 경우) 레이어의 가시성에만 영향을 미칩니다.
타이머없이 수행 할 수있는 방법이 있습니까? 버튼을 눌렀을 때 텍스트 필드를 숨기면 왜 코드를 지연시키고 싶은지 알 수 없습니다. 놓았을 때 다시 보여주십시오. 타이머가 필요하지 않은 것처럼 보입니다. – Zakman411
@ Zakman411 : 원래 질문을 잘못 읽은 것 같습니다. 나는 내 대답을 업데이트했다. – FreeAsInBeer
나는 인터페이스 빌더에서 buttonHit과 buttonReleased를 어떻게 구현합니까? 나는 각 IBAction으로 끌고가는 것을 보지 못합니까? – Zakman411