Ios 当UITextView成为第一响应者时,为什么UIScrollView不向上滚动?
当用户点击按钮在Ios 当UITextView成为第一响应者时,为什么UIScrollView不向上滚动?,ios,objective-c,uiscrollview,uitextfield,uitextview,Ios,Objective C,Uiscrollview,Uitextfield,Uitextview,当用户点击按钮在UIScrollView上添加UITextView时,UITextView成为第一响应者。实际上,包含UITextView或UITextField的UIView被添加到UIScrollView中。当键盘出现时,scrollview不会向上滚动,但是当它成为第一响应者时,UITextField会使它向上滚动。我注册UIKeyboardDidShowNotification向上滚动。下面是我的代码 - (void)keyboardDidShow:(NSNotification *)n
UIScrollView
上添加UITextView
时,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
的子类吗?简而言之,您的问题的答案是肯定的,这种行为是由UITextView是UIScrollView的子类引起的。您可以找到更多详细信息,以及如何禁用它的解决方案。如果有人看到此问题,答案将设置为启用了UITextView滚动false
在拉维科的回答中,我得到了一个提示<代码>UIScrollView的子类
这对我很有用。因为:1。这不是一个肯定/否定的问题2。引用的链接也没有解决方案。