2011-09-02 2 views
0

私は数多くのtextfieldsと、それに続くUISwitchesUIButtonsのスクロールビューを持っており、その後にはさらにtextfieldsが続きます。スクロールビュー - ビュー内のオブジェクトを保持する方法

私はtextFieldDidBeginEditingイベントを見つけて、textfieldをビューにスクロールします。しかし、私はUISwitchUIButtonのような他のオブジェクトと同様のものを見つけていません。

これは何かありますか?以下は、私がtextfieldsに使用するコードです:

- (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イベントを使用することができます。

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

すべてのUISwitchオブジェクトへの参照を追加して、それぞれの例のような行がありますか? Aso ScrollViewtoCenter ...ビューを送信する必要があります。あなたの例で私はそれをどのようにして行いますか? –

+0

はい、UISwitchごとに上記のコードを書く必要があります。また、scrollViewToCenterOfScreenメソッドが呼び出されると、偶数が引数としてトリガされたViewが取得されるため、そのビューを直接使用して操作を実行できます。 – Mohammad

+0

イベントはデフォルトで送信者オブジェクトを渡します(これはscrollViewToCenterOfScreenメソッドのシグネチャと一致します)。フォームの各UISwitchコントロールに上記の行を追加するだけで、すべてがそのまま動作します。 –

関連する問題