UISearchBar的动画问题

AmoAmo_Amo 2017-07-06 01:26:11




如图所示,我需要完成的功能是:当点击UISearchBar的输入框时,让整个tableView都向上滑动的动画。出现的问题如图所示,UISearchBar直接立刻跳到最后的位置,这是怎么回事啊。

用的是UIView的动画
[UIView animateWithDuration:0.4 animations:^{
self.shadowView.frame = CGRectMake(0, 50, self.view.frame.size.width, [UIScreen mainScreen].bounds.size.height);
}];


...全文
399 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Quinn士魁 2017-07-14
  • 打赏
  • 举报
回复
嗯嗯,不错,键盘弹出自带动画
AmoAmo_Amo 2017-07-06
  • 打赏
  • 举报
回复
没人来回答吗。。那我自己来回答好了。。。

问题已经解决了,发现了- (BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar这个方法,当tableView的位置在Y2 Y3的位置时,就让Editing方法失效,

/**
每次点击searchBar的textField时,都会走这个方法

* 返回false时, searchBar的textField点击没有反应
* 默认返回true
*/
- (BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar
{
if (!self.offsetY) {
self.offsetY = Y3;
}

// 如果点击时,shadowView的y坐标 在Y2 Y3的位置,
if (self.offsetY > Y1) {
NSLog(@"----------- y = %f ------------",self.offsetY);
// ============ 触发block =============
if (self.didClickTextFieldBlock) {
self.didClickTextFieldBlock();
}
return false;
}


return true;
}


然后在block里先做tableView上滑的动画,动画结束后再呼出键盘。注意一定要在动画结束后再呼出键盘,否则bug依然存在。

[self.vc didClickTextField:^{

NSLog(@"receive-----------");
[UIView animateWithDuration:0.4 animations:^{

self.shadowView.frame = CGRectMake(0, 50, self.view.frame.size.width, [UIScreen mainScreen].bounds.size.height);
}completion:^(BOOL finished) {
// 呼出键盘。 一定要在动画结束后调用,否则会出错
[self.vc.searchController.searchBar becomeFirstResponder];
}];
// 更新offsetY
self.vc.offsetY = self.shadowView.frame.origin.y;

}];



更多细节在我的博客里,http://blog.csdn.net/a997013919/article/details/74507068,希望能够帮助到有同样问题的朋友

最后上一下最终的效果图吧:





29,027

社区成员

发帖
与我相关
我的任务
社区描述
主要讨论与iOS相关的软件和技术
社区管理员
  • iOS
  • 大熊猫侯佩
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧