【iOS】iOS 11 UITextField 拖拽框里文字闪退问题定位

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 = @"找不到网页";
}

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值