UIApplication :: sendEvent 오버라이드에 있습니다. 궁극적으로 나에게 UITouch 객체를주는 UIEvent를 얻는다. UITouch가 위상 == 3 일 때 (터치 위상이 끝났거나 터치 업), UITouch의 뷰 객체가 UISegmentedControl인지 아닌지 식별하려고합니다. 그렇다면 selectedSegmentIndex를 얻으려고합니다. 이 시점에서 나는 항상 잘못된 값 (또는 selectedSegmentIndex의 이전 값)을 얻습니다.UISegmentedControl - 터치 업시 selectedSegment가 변경되지 않습니까?
이 값은 조치 메소드가 실행 된 후에 만 변경됩니까? 또는 selectedSegmentIndex의 최신 값을 가져 오려면 무엇을해야합니까?
도움을 주시면 감사하겠습니다.
- (void)sendEvent:(UIEvent *)event
{
[super sendEvent:event];
NSSet *touches = [event allTouches];
NSEnumerator *enumerator = [touches objectEnumerator];
id value;
while ((value = [enumerator nextObject])) {
UITouch *touch = value;
if (touch.phase==3) {
if([touch.view isKindOfClass:[UISegmentedControl class]])
{
UISegmentedControl *sc = (UISegmentedControl*)touch.view;
NSLog(@"%d",[sc selectedSegmentIndex]);
}
}
}
}
설명하는 대신 코드 표시 –
@Andrey - 코드를 추가했습니다. 희망이 도움이됩니다. – Jailbroken