Khi bàn phím bị ẩn, scrollview sẽ trở lại nội dung gốc của nóInset, nhưng nó không hoạt động trong iOS7. Đặt nội dung của scrollviewInset khi bàn phím được hiển thị đang hoạt động nhưng khi bàn phím bị ẩn, contentInset của scrollview không thể đặt thành inset zero. Mã:iOS7 UIScrollView contentInset not working
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWasShown:) name:UIKeyboardDidShowNotification object:Nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWasHidden:) name:UIKeyboardDidHideNotification object:nil];
}
- (void)keyboardWasShown:(NSNotification *)notif
{
CGSize keyboardSize = [[[notif userInfo] objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;
UIEdgeInsets contentInsets = UIEdgeInsetsMake(0, 0, keyboardSize.height, 0);
UIScrollView *scrollView = (UIScrollView *)self.view;
scrollView.contentInset = contentInsets;
scrollView.scrollIndicatorInsets = contentInsets;
CGRect rect = self.view.frame;
rect.size.height -= keyboardSize.height;
if (!CGRectContainsPoint(rect, self.wishContentField.frame.origin)) {
CGPoint point = CGPointMake(0, self.wishContentField.frame.origin.y - keyboardSize.height);
[scrollView setContentOffset:point animated:YES];
}
}
- (void)keyboardWasHidden:(NSNotification *)notif
{
UIEdgeInsets zeroInsets = UIEdgeInsetsZero;
UIScrollView *scrollView = (UIScrollView *)self.view;
[scrollView setContentInset:zeroInsets];
scrollView.scrollIndicatorInsets = zeroInsets;
}
bạn có thể giải thích như thế nào nó không làm việc (làm thế nào nó hành vi sau khi ẩn bàn phím)? Lưu ý rằng trên iOS 7, nếu bạn có một 'navigationBar' mờ, trình điều khiển chế độ xem của bạn sẽ thiết lập một inset hàng đầu cho scrollViews của bạn nếu không được thiết lập khác. Đây có thể là trường hợp ở đây, vì bạn đang đặt 'contentInset.top = 0', vì vậy nó có thể ẩn một số nội dung đằng sau' navigationBar' hoặc 'statusBar'. –
Cảm ơn bạn đã trả lời. Tôi đặt đầu vào navigationBar.frame.size.height, và nó đang hoạt động ngay bây giờ. –
Viết câu trả lời và cho tôi một số tín dụng;) –