美文网首页程序员
【iOS】iOS 11 UITextField 拖拽输入框文字时

【iOS】iOS 11 UITextField 拖拽输入框文字时

作者: x_code | 来源:发表于2018-04-20 16:12 被阅读94次

    iOS 11中UITextField有了一个新功能,就是用户可以将一个UITextField中的文字拖拽到其他的文本框中,当时在做浏览器,自己写了一UITextField当搜索框,然后有个需求就是:在键盘弹的时候,将UITextField内容变成当前网址,而在键盘收起的时候将UITextField内容变为网站标题接下去是原来代码:

      @weakify(self); 
      //利用RAC监听键盘,当键盘收起的时候先将UITextField改为需要的内容
    [[[NSNotificationCenter defaultCenter] rac_addObserverForName:UIKeyboardWillHideNotification object:nil] subscribeNext:^(NSNotification * notification) {  
      @strongify(self);  
     self.searchTextField.text = @"找不到网页"; 
    }];
    

    然后当你利用UITextField的新特性drag的时候,键盘就会收起来,当你把文字重新drag回UITextField的时候,程序就会闪退,而且没有断点断在崩溃的代码,无法直接定位。

    当时百度了很多,有说iOS 11 UITextField内存泄露的之类的,试了下发现都不行,然后一行一行逻辑去检查,注释代码然后进行drag功能,发现就是drag的时候收起键盘的同时,drag和收起键盘的通知同时操作了UITextField,写入了self.searchTextField.text。

    发现了问题之后,只好将键盘收起时候的一些逻辑放入了下面代理中。意思就是拖拽的时候收起键盘,然后做一些逻辑处理。

    - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{
    

    代码如下

    - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{
        [self.view endEditing:YES];
        self.searchTextField.text = @"找不到网页";
    }
    

    这种奇葩闪退,没有断点可以调试,只能一段一段逻辑去排查,网上也没有资料可以参考,因此记录一下。

    相关文章

      网友评论

        本文标题:【iOS】iOS 11 UITextField 拖拽输入框文字时

        本文链接:https://www.haomeiwen.com/subject/dkqzkftx.html