не очень легко объяснить проблему, но я попробую:
У меня есть вид с прокруткой и много текста и текстового поля.
Я хочу прокручивать вверх и вниз, когда кто-то начал редактировать одно поле (или текстовое представление), поэтому у меня есть:
- (void)keyboardDidShow:(NSNotification*)aNotification{
NSDictionary* info = [aNotification userInfo];
CGSize kbSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;
UIEdgeInsets contentInsets = UIEdgeInsetsMake(0.0, 0.0, kbSize.height, 0.0);
o_scroolView.contentInset = contentInsets;
o_scroolView.scrollIndicatorInsets = contentInsets;
// If active text field is hidden by keyboard, scroll it so it's visible
// Your application might not need or want this behavior.
CGRect aRect = self.view.frame;
aRect.size.height -= kbSize.height;
if (!CGRectContainsPoint(aRect, activefield.frame.origin) ) {
CGPoint scrollPoint = CGPointMake(0.0, activefield.frame.origin.y-kbSize.height);
[o_scroolView setContentOffset:scrollPoint animated:YES];
}
}
- (void)keyboardDidHide:(NSNotification*)aNotification
{
UIEdgeInsets contentInsets = UIEdgeInsetsZero;
o_scroolView.contentInset = contentInsets;
o_scroolView.scrollIndicatorInsets = contentInsets;
activefield=NULL;
}
как говорит Apple Doc. Поле Offcourse active - это UIView *, назначенный через
-(void)textFieldDidBeginEditing:(UITextField *)textField {
NSLog(@"textFieldDidBeginEditing");
activefield=textField;
}
- (void)textViewDidBeginEditing:(UITextView *)textView{
NSLog(@"textViewDidBeginEditing");
activefield=textView;
}
хорошо, все работает хорошо, кроме случаев, когда
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range
replacementText:(NSString *)text
{
// Any new character added is passed in as the "text" parameter
if ([text isEqualToString:@"\n"]) {
// Be sure to test for equality using the "isEqualToString" message
// [self EnablePrice:TRUE];
[textView resignFirstResponder];
// Return FALSE so that the final '\n' character doesn't get added
return FALSE;
}
// For any other character return TRUE so that the text gets added to the view
return TRUE;
}
Вид прокрутки после отставки (_scrollview) перестает двигаться, когда я перемещаю палец вверх и вниз.
Спасибо в совете.