【发布时间】:2018-02-17 00:53:09
【问题描述】:
UITextView 在用户点击按钮以在UIScrollView 上添加UITextView 时成为第一响应者。实际上包含UITextView 或UITextField 的UIView 被添加到UIScrollView 中。当键盘出现时,scrollview 不会向上滚动,但是 UITextField 在成为第一响应者时会向上滚动。我注册UIKeyboardDidShowNotification 向上滚动。下面是我的代码
- (void)keyboardDidShow:(NSNotification *)notification {
CGRect keyboardEndFrame;
[(notification.userInfo)[UIKeyboardFrameEndUserInfoKey] getValue:&keyboardEndFrame];
NSInteger height = CGRectGetHeight(keyboardEndFrame);
NSInteger lastObj = arrayTotalObjects.count - 1;
UIView *lastView = [arrayTotalObjects objectAtIndex:lastObj];
if(!(lastView.frame.origin.y > height))
return;
UIEdgeInsets inset = originalInset;
inset.bottom += height;
NSLog(@"inset: %f", inset.bottom);
[UIView animateWithDuration:0.3f animations:^{
scrlView.contentInset = inset;
}completion:^(BOOL finished) {
NSLog(@"scrlView inset bottom: %f", scrlView.contentInset.bottom);
}];
}
在这种情况下,lastView 将是包含 UITextView 的 UIView。
此代码适用于UITextField,但不适用于UITextView。这怎么可能?是不是因为UITextView 是UIScrollView 的子类?
【问题讨论】:
标签: ios objective-c uiscrollview uitextfield uitextview