2012-04-11 3 views
0

вот мой код:UIKeyboardWillShowNotification и слайдов, когда клавиатура отображается

-(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]; 
} 

Проблема заключается в том, как я могу это spezify работать только на TextView3, не TextView2 или TextView1. BackGround - это то, что TextView1 и TextView2 не нужны, потому что есть поверх моего представления. Только TextView3 является TextView, который не читается, потому что клавиатура накладывается, и представление должно быть исправлено, чтобы читать то, что я пишу.

ответ

2

назначить специальный тег для textView3 реализовать текстовый делегат TextView - (void)textViewDidBeginEditing:(UITextView *)textView; здесь вы проверите тег textView, если его равный тегу textView 3 вызовет вашу функцию -(void)setViewMovedUp:(BOOL)movedUp.

Подробнее Код:

Ok вам нужно импортировать TextViewDelegate в свой ViewController так: в файле .h ViewController ->viewController : UIViewController<UITextVIewDelegate>

Тогда в viewDidload экс присвоить метку, как это: textView3.tag = 222;

Затем возьмите делегатский метод, который я напишу над «textViewDidBeginEdit», и внутри сделайте надпись if, чтобы проверить тег textView, если он равен 222, вызовите вашу функцию.

Это лучшее, что я могу описать прямо сейчас, потому что я пишу это с iPhone ... Удачи.

+0

Можете ли вы дать мне код для этого, пожалуйста? Im на начальном уровне в Objective C – Kovu

+0

Проверьте мое редактирование plz. –

Смежные вопросы