0

これが私のコードです:

-(void)setViewMovedUp:(BOOL)movedUp
{
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:0.2]; // if you want to slide up the view
    [UIView setAnimationBeginsFromCurrentState:YES];

    CGRect rect = scroll.frame;
    if (movedUp)
    {
        rect.size.height += kOFFSET_FOR_KEYBOARD;
        rect.origin.y -= kOFFSET_FOR_KEYBOARD;
    }
    else
    {
        rect.size.height -= kOFFSET_FOR_KEYBOARD;
        rect.origin.y += kOFFSET_FOR_KEYBOARD;


    }
    scroll.frame = rect; 
    [UIView commitAnimations];
}


- (void)keyboardWillHide:(NSNotification *)notif {
    [self setViewMovedUp:NO];
}


- (void)keyboardWillShow:(NSNotification *)notif{
    [self setViewMovedUp:YES];
}

- (void)viewWillAppear:(BOOL)animated
{
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) 
                                                 name:UIKeyboardWillShowNotification object:self.view.window];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) 
                                                 name:UIKeyboardWillHideNotification object:self.view.window];
}

- (void)viewWillDisappear:(BOOL)animated
{
    // unregister for keyboard notifications while not visible.
    [[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillShowNotification object:nil];
    [[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillHideNotification object:nil];
}

問題は、これをTextView3でのみ機能し、TextView2またはTextView1では機能しないようにするにはどうすればよいかということです。BackGroundは、TextView1とTextView2は、私のビューの上にあるので、それを必要としないということです。TextView3のみがTextViewであり、キーボードがオーバーレイされており、私が書いたものを読み取れるようにビューを修正する必要があるため、読み取ることができません。

4

1 に答える 1

2

textView3 に特別なタグを割り当て、TextView デリゲート メソッドを実装し(void)textViewDidBeginEditing:(UITextView *)textView;ます。ここでは、textView タグが textView 3 タグと等しいかどうかをチェックし、関数を呼び出します-(void)setViewMovedUp:(BOOL)movedUp

より多くのコード:

OK、次のように TextViewDelegate を viewController にインポートする必要があります: in .h viewController ファイル ->viewController : UIViewController<UITextVIewDelegate>

次に、 ex の viewDidload で、次のようにタグを割り当てます。textView3.tag = 222;

次に、「textViewDidBeginEdit」の上に記述したデリゲート メソッドを使用し、内部で if ステートメントを作成して、222 に等しい場合は textView タグをチェックし、関数を呼び出します。

iPhone からこれを書いているので、これは私が今説明できる最高のものです...頑張ってください。

于 2012-04-11T15:38:23.993 に答える