当我在显示的键盘上单击文本字段两次时,iOS UIScrollView无法滚动

时间:2017-10-13 01:06:59

标签: ios objective-c uiscrollview

我在Objective-C的UIScrollview上遇到了关于iOS的问题。

我将UI自动布局拖到照片下方。

enter image description here

单击文本字段时,键盘将显示,我需要可以滚动视图。

enter image description here

似乎没问题,但是当我点击完成按钮并隐藏键盘时,

我再次单击文本字段,键盘将显示,但我无法再次滚动视图。

其他问题就像上面的照片,

当我在tableview上滚动时,tableview无法滚动

它滚动外部滚动视图,如何在tableview上设置触摸,它的滚动表视图。

我的键盘事件代码如下,我在GitHub中上传了此页面的完整代码和自动布局项目: this problem link

有人能给我一些帮助吗?非常感谢你。

 - (void)viewDidLoad {
[super viewDidLoad];

      [self registerForKeyboardNotifications];
     self.tf.inputAccessoryView = self.keyboardToolbarVw;

 }

 - (void)registerForKeyboardNotifications
 {
     [[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(keyboardWasShown:)
                                             name:UIKeyboardDidShowNotification object:nil];
     [[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(keyboardWillBeHidden:)
                                             name:UIKeyboardWillHideNotification object:nil];
 }

 - (void)keyboardWasShown:(NSNotification*)aNotification
 {
     NSDictionary* info = [aNotification userInfo];
     CGSize kbSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;
     UIEdgeInsets contentInsets = UIEdgeInsetsMake(0.0, 0.0, kbSize.height, 0.0);
     self.sv.contentInset = contentInsets;
     self.sv.scrollIndicatorInsets = contentInsets;

     CGRect aRect = self.view.frame;
     aRect.size.height -= kbSize.height;
     if (!CGRectContainsPoint(aRect, self.view.frame.origin) ) {
         CGPoint scrollPoint = CGPointMake(0.0, self.view.frame.origin.y-kbSize.height);
         [self.sv setContentOffset:scrollPoint animated:YES];
     }
 }


 - (void)keyboardWillBeHidden:(NSNotification*)aNotification
 {
     UIEdgeInsets contentInsets = UIEdgeInsetsZero;
     self.sv.contentInset = contentInsets;
     self.sv.scrollIndicatorInsets = contentInsets;
 }

 - (IBAction)keyboardToolbarDoenBtnAction:(UIButton *)sender {
     [self.tf resignFirstResponder];
 }

1 个答案:

答案 0 :(得分:1)

在审核完代码后,UIScrollView

中的- (void)keyboardWasShown:(NSNotification*)aNotification帧问题似乎更新了

请尝试 IQKeyboardManager

而不是手动处理相框

我建议在所有项目中使用 IQKeyboardManager 库:)它是一个插入式通用库,可以防止键盘滑动问题并覆盖UITextField / UITextView而无需你编写任何代码等等......