Din*_*ino 19 xcode uiscrollview uitextview ios ios7
我刚刚发现了一个令人烦恼的bug,它的新keyboardDismissMode属性scroll view.当使用带有text view值的a UIScrollViewKeyboardDismissModeInteractive并且键盘被解除时,scroll view似乎在它继续减速之前跳到顶部.
我已向Apple提交了一份错误报告,但需要解决方法.我已经尝试了DAKeyboardControl没有新的iOS7支持,幕后使用它keyboardDismissMode,它仍然做到这对我来说表明这是一个更深层次的问题.
有什么建议?
似乎是一个错误或只是一个不理想的默认状态。但根据测试项目中的代码,经过一些微调后,类似下面的代码可能会起作用。
示例代码有两个问题,一是当键盘出现时,您没有对文本的大小进行任何操作,因此您无法使用或查看键盘下的文本。还有其他解决方案,但一个快速而肮脏的解决方案是更改帧大小(在提交应用程序中,我还会获取动画信息并对视图帧更改进行动画处理以匹配键盘动画,这超出了本问题的范围)。您可以在“willShow”等中执行此操作,然后在“didHide”等中将其带回。
然后,内容偏移量在隐藏时会被捏造,并且当您在隐藏和滚动视图更改的回调之前和周围将其拖离屏幕时,确实会出现一些奇怪的状态。我只是保存状态并在键盘消失并且更新了文本视图后“修复”它。
我在故事板中创建了一些属性和一个出口来修改文本视图。
- (无效)viewDidLoad
{
[超级viewDidLoad];
[[NSNotificationCenter defaultCenter] addObserver:self 选择器:@selector(keyboardWillShow:) 名称:UIKeyboardWillShowNotification 对象:nil];
[[NSNotificationCenter defaultCenter] addObserver:self 选择器:@selector(keyboardDidHide:) 名称:UIKeyboardDidHideNotification 对象:nil];
}
- (void)keyboardWillShow:(NSNotification *)通知
{
NSDictionary * info = [通知用户信息];
CGSize 大小 = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;
CGRect 矩形 = self.textView.frame;
矩形.尺寸.高度 -= 尺寸.高度;
self.textView.frame = 矩形;
}
- (void)keyboardDidHide:(NSNotification *)通知
{
NSLog(@"====== KeyboardDidHide =======");
NSDictionary * info = [通知用户信息];
CGSize 大小 = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;
CGRect 矩形 = self.textView.frame;
矩形.尺寸.高度 += 尺寸.高度;
self.textView.frame = 矩形;
self.hidingKeyboard = 是;
}
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
NSLog(@"%f",scrollView.contentOffset.y);
if(self.hidingKeyboard == YES)
{
scrollView.contentOffset = self.lastOffset;
self.hidingKeyboard = NO;
NSLog(@"======重置=======");
}
别的
self.lastOffset=scrollView.contentOffset;
}
| 归档时间: |
|
| 查看次数: |
4396 次 |
| 最近记录: |