내 하위 클래스의 UIView는 터치 이벤트를 처리하고 터치가 시작될 때 추적이 발생할 때 내부 값을 업데이트합니다.UIKIt에서 사용자 정의 컨트롤을 어떻게 작성합니까?
내보기 컨트롤러가이 사용자 지정보기를 화면에로드합니다. 내 사용자 정의 컨트롤의 값 변경을 수신 대기하도록 내 View Controller를 설정하는 가장 좋은 방법은 무엇입니까?
내 하위 클래스의 UIView는 터치 이벤트를 처리하고 터치가 시작될 때 추적이 발생할 때 내부 값을 업데이트합니다.UIKIt에서 사용자 정의 컨트롤을 어떻게 작성합니까?
내보기 컨트롤러가이 사용자 지정보기를 화면에로드합니다. 내 사용자 정의 컨트롤의 값 변경을 수신 대기하도록 내 View Controller를 설정하는 가장 좋은 방법은 무엇입니까?
당신은 할 수 있습니다
UIControl
를 대신하여 컨트롤러에 UIControlEvent
들 보내때 값의 변화를 (또는 사용자가 귀하의 컨트롤과 상호 작용할 때).
보기가 사용자로부터 입력 형식을 얻는 데 사용되는 경우 UIControl
을 서브 클래 싱하는 것이 더 나은 방법입니다. 아이폰 참조 라이브러리에서
UIControl
는 컨트롤의 기본 클래스입니다 : 응용 프로그램에 사용자의 의도를 전달하는 데 사용되는 버튼과 슬라이더 등의 객체.
따라서 UIView
과 UIControl
의 가장 중요한 차이는 사용자의 의도가 전달되었는지 여부입니다. UIView
은 정보를 표시하기위한 것이고 UIControl
은 사용자 입력을 수집하기위한 것입니다.
UPDATE : 사용자 지정 뷰의 인터페이스에서
같이 대리자를 정의 :
@interface MyView : UIView {
id delegate;
}
@property (assign) id delegate;
@end
대리자 패턴으로 이동하기로 결정하는 경우, 여기에 코드가 같이하는 방법입니다 구현시
및 @synthesize
입니다. 이어서
MyView myView = [[MyView alloc] init];
[myView setDelegate:self];
, 사용자는, 아마도 값 변화의 관점에서이를 (touchesBegan
에서 예) 뷰와 상호 작용할 때마다 :보기 제어기
는 위임 될 제어기를 설정 : 또한 코코아 기초 가이드에 Delegates and Data Sources를 살펴 할 수 있습니다
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
// Possibly change the values
if([delegate respondsToSelector:@selector(valuesChanged)]) {
[delegate valuesChanged];
}
}
.
selam, 내 질문과 같습니다. 마지막 두 가지 질문을 볼 수 있었습니까? 여전히 좋은 반응이 없었습니다. 귀하의 의견을 고맙게 생각합니다. http://stackoverflow.com/questions/6597997/iphone-application-object-oriented-design-ideas – Spring
죄송합니다. 그 답변을 작성한 직후에 잠이 들었습니다. 지금 내 대답을 업데이트했습니다. –