Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios UITextView键盘模式错误_Ios_Xcode_Uiscrollview_Uitextview_Ios7 - Fatal编程技术网

Ios UITextView键盘模式错误

Ios UITextView键盘模式错误,ios,xcode,uiscrollview,uitextview,ios7,Ios,Xcode,Uiscrollview,Uitextview,Ios7,我刚刚发现了一个恼人的bug,它是滚动视图的新keyboardismissmode属性。当将其与值为UIScrollViewKeyboardDismissModeInteractive的文本视图一起使用时,键盘被关闭,滚动视图在继续减速之前似乎会跳到顶部 我已经向苹果提交了一份bug报告,但需要一个解决方法。我已经尝试了DAKeyboardControl而没有新的iOS7支持,它在后台使用keyboardismissmode,但它仍然这样做,这对我来说表明这是一个更深层次的问题 有什么建议吗?似

我刚刚发现了一个恼人的bug,它是
滚动视图
的新
keyboardismissmode
属性。当将其与值为
UIScrollViewKeyboardDismissModeInteractive
文本视图
一起使用时,键盘被关闭,
滚动视图
在继续减速之前似乎会跳到顶部

我已经向苹果提交了一份bug报告,但需要一个解决方法。我已经尝试了
DAKeyboardControl
而没有新的
iOS7
支持,它在后台使用
keyboardismissmode
,但它仍然这样做,这对我来说表明这是一个更深层次的问题


有什么建议吗?

似乎是一个bug,或者只是一个不理想的默认状态。但是根据测试项目中的代码,经过一些更精细的调整后,下面类似的内容可能会起作用

示例代码有两个问题,一个是当键盘出现时,您没有对文本大小进行任何操作,因此无法使用或查看键盘下的文本。还有其他解决方案,但一个快速而肮脏的解决方案是更改帧大小(在提交应用程序中,我还将获取动画信息并设置视图帧更改的动画,以匹配键盘动画,这超出了本问题的范围)。你在《willShow》或类似的作品中这样做,然后在《didHide》或类似的作品中把它带回来

然后,当内容偏移量被隐藏时,它会被篡改,并且当您在回调之前和周围拖动它以隐藏和滚动视图更改时,确实会出现一些奇怪的状态。我只需保存状态,并在键盘离开并更新文本视图后“修复”它

我在故事板中创建了一些属性和一个插座,以便在文本视图中进行篡改

- (void) viewDidLoad { [super viewDidLoad]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDidHide:) name:UIKeyboardDidHideNotification object:nil]; } - (void) keyboardWillShow:(NSNotification *)notification { NSDictionary * info = [notification userInfo]; CGSize size = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size; CGRect rect = self.textView.frame; rect.size.height -= size.height; self.textView.frame = rect; } - (void)keyboardDidHide:(NSNotification *)notification { NSLog(@"====== keyboardDidHide ======="); NSDictionary * info = [notification userInfo]; CGSize size = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size; CGRect rect = self.textView.frame; rect.size.height += size.height; self.textView.frame = rect; self.hidingKeyboard = YES; } - (void) scrollViewDidScroll:(UIScrollView *)scrollView { NSLog(@"%f", scrollView.contentOffset.y); if(self.hidingKeyboard == YES) { scrollView.contentOffset = self.lastOffset; self.hidingKeyboard = NO; NSLog(@"====== reset ======="); } else self.lastOffset = scrollView.contentOffset; } -(无效)viewDidLoad { [超级视图下载]; [[NSNotificationCenter defaultCenter]添加观察者:自选择器:@selector(keyboardWillShow:)名称:UIKeyboardWillShowNotification对象:nil]; [[NSNotificationCenter defaultCenter]添加观察者:自选择器:@selector(keyboardDidHide:)名称:UIKeyboardDidHideNotification对象:nil]; } -(无效)键盘将显示:(NSNotification*)通知 { NSDictionary*info=[通知用户信息]; CGSize size=[[info-objectForKey:UIKeyboardFrameBeginUserInfo]CGRectValue].size; CGRect rect=self.textView.frame; rect.size.height-=size.height; self.textView.frame=rect; } -(无效)键盘隐藏:(NSNotification*)通知 { NSLog(@“==========键盘隐藏===========”); NSDictionary*info=[通知用户信息]; CGSize size=[[info-objectForKey:UIKeyboardFrameBeginUserInfo]CGRectValue].size; CGRect rect=self.textView.frame; rect.size.height+=size.height; self.textView.frame=rect; self.hidingKeyboard=是; } -(无效)scrollViewDidScroll:(UIScrollView*)scrollView { NSLog(@“%f”,scrollView.contentOffset.y); 如果(self.hidingKeyboard==是) { scrollView.contentOffset=self.lastOffset; self.hidingKeyboard=否; NSLog(@“=========================”); } 其他的 self.lastOffset=scrollView.contentOffset; }
对于这个问题,您最好使用scrollviewDelegete编写代码,并简单地提及何时通过ResignFirstResponder关闭键盘

我正在尝试复制。我在窗口上添加了一个文本视图,并且有一个长文本。我将键盘关闭模式设置为交互式。我添加了一个
scrollViewDidScroll:
实现来捕捉奇怪的跳跃。它按预期工作。您能详细介绍一下您的用例吗?我已经在这里发布了我的示例项目:。该项目是故事板中的单个文本视图,其中包含一些lorem ipsum文本。视图控制器注册键盘隐藏通知,同时也是文本视图委托。我正在记录did hide通知以及滚动视图滚动时内容偏移量的y位置。如果运行项目并关闭键盘,在触发did hide通知后,您将看到scrollViewDidScroll方法中出现一些非常不稳定的数字。每当我打开resignFirstResponder时,似乎都会发生这种情况我的观点。有趣的是,当我用iPhone6横向“隐藏键盘”按钮隐藏键盘时,这种情况并没有发生。示例代码的目的是演示由于关闭键盘而导致的错误。我很感激您不能查看键盘后面的文本,但这与我所问的bug无关。通过不包含在键盘出现时更改帧的代码,我们可以排除它导致/促成问题的可能性。此外,我已经为键盘隐藏后混乱的内容偏移量实施了修复,即使在没有减速的情况下也无法工作。请详细描述您正在尝试的交互以及你所看到的。当我从键盘上的文本视图向下拖动屏幕时,键盘会平移,上面的代码会将我在屏幕上看到的文本保持在我预期的位置(即,我用键盘向下拖动)。如果您在scrollViewDidScroll委托方法中记录srollview的contentOffset.y,然后在发生跳转时关闭键盘,您将在控制台中看到不稳定的数字。这并不是一直都在发生,但它确实经常发生,足以成为一个问题。当解雇发生时,滚动视图中没有减速时,这一点最为明显。