2011-09-02 3 views
0

나는 많은 textfields 및 그 다음에 UISwitchesUIButtons이 있고 더 많은 숫자가 textfields 인 스크롤보기를 가지고 있습니다.스크롤보기 -보기에서 개체를 유지하는 방법

나는 textFieldDidBeginEditing 이벤트를 발견했으며이를 사용하여 textfield을보기로 스크롤합니다. 그러나 나는 UISwitchUIButton과 같은 다른 대상과 비슷한 것을 발견하지 못했습니다.

이 작업을 수행 할만한 것이 있습니까?

- (void)textFieldDidBeginEditing:(UITextField *)textField { 
    [self scrollViewToCenterOfScreen:textField]; 
} 



- (void)scrollViewToCenterOfScreen:(UIView *)theView { 
    CGFloat viewCenterY = theView.center.y; 
    CGRect applicationFrame = [[UIScreen mainScreen] applicationFrame]; 

    CGFloat availableHeight = applicationFrame.size.height - _keyboardHeight; // Remove area covered by keyboard 

    CGFloat y = viewCenterY - availableHeight/2.0; 
    if (y < 0) { 
     y = 0; 
    } 
    ScrollView.contentSize = CGSizeMake(applicationFrame.size.width, applicationFrame.size.height + _keyboardHeight); 
    [ScrollView setContentOffset:CGPointMake(0, y) animated:YES]; 



} 

답변

0

당신은 이벤트를 UIControlEventValueChanged 사용할 수 있습니다 아래는 제가 textfields에 사용하는 코드입니다.

[switchControl addTarget:self action:@selector(scrollViewToCenterOfScreen:) forControlEvents:UIControlEventValueChanged]; 
+0

모든 UISwitch 개체에 대한 참조를 추가 한 다음 각각에 대해 예제와 같은 선이 있습니까? Aso ScrollViewtoCenter ... 뷰를 보내야합니다. 당신의 모범에서 나는 그것을 어떻게하겠습니까? –

+0

예 위의 각 UISwitch 코드를 작성해야합니다. 그리고 scrollViewToCenterOfScreen 메소드가 호출 될 때 심지어 짝수가 인수로 트리거 된 뷰를 가져올 수 있으므로 어떤 뷰를 수행하기 위해 뷰를 직접 사용할 수 있습니다. – Mohammad

+0

이벤트는 기본적으로 보낸 사람 개체 (사용자의 scrollViewToCenterOfScreen 메서드의 서명과 일치 함)를 전달합니다. 양식의 각 UISwitch 컨트롤에 위의 행을 추가하기 만하면 모든 것이 그대로 작동합니다. –

관련 문제