Search Bar and Search Display Controller在iOS8的兼容问题。

  

  这是苹果ios8.1自带的通讯录的效果图。下拉时,searchbar不会随着下拉。

  自己如果直接把Search Bar and Search Display Controller直接拖入UIView中会被遮挡;iOS6.1就没有这个问题。

  为了解决问题很简单,就是对Search Bar and Search Display Controller,进行上下移动;对UITableView,也要相应的移动(不移动会有显示瑕疵);

  为了把瑕疵减小,对两个控件移动时会添加动画。

 1 - (void)viewDidLoad {
 2     [super viewDidLoad];
 3     // Do any additional setup after loading the view from its nib.
 4     self.title = @"所有联系人";
 5     // 获取系统版本号
 6     mSystemVersion = [NSString stringWithFormat:@"%f",[[[UIDevice currentDevice] systemVersion] floatValue]];
 7     NSLog(@"-------------------%@",mSystemVersion);
 8     if ([mSystemVersion isEqualToString:@"6.100000"])
 9     {
10         
11 //        self.searchDisplayController.searchBar.frame = CGRectMake(0, 0, 320, 44);
12     }
13     else if ([mSystemVersion isEqualToString:@"8.100000"])      // 这是在ios8.1中做适配
14     {
15         self.searchDisplayController.searchBar.frame = CGRectMake(0, 64, 320, 44);
16         self.tv_table.frame = CGRectMake(0, -20, 320, 524);
17     }
18 }
19 
20 
21 // 点击时上移控件。
22 - (void)searchBarTextDidBeginEditing:(UISearchBar *)_searchBar
23 {
24     if ([mSystemVersion isEqualToString:@"6.100000"])
25     {
26         self.tv_table.frame = CGRectMake(0, 0, 320, 504);
27     }
28     else if ([mSystemVersion isEqualToString:@"8.100000"])      // 这是在ios8.1中做适配
29     {
30         [UIView animateWithDuration:0.28 animations:^{
31             self.tv_table.frame = CGRectMake(0, 44, 320, 524);
32             self.searchDisplayController.searchBar.frame = CGRectMake(0, 20, 320, 44);
33         }];
34     }
35     [self.searchDisplayController.searchBar setShowsCancelButton:YES];
36 }
37 
38 
39 
40 // 点击取消时下移
41 - (void)searchBarTextDidEndEditing:(UISearchBar *)searchBar
42 {
43     if ([mSystemVersion isEqualToString:@"6.100000"])
44     {
45         self.tv_table.frame = CGRectMake(0, 44, 320, 504);
46     }
47     else if ([mSystemVersion isEqualToString:@"8.100000"])      // 这是在ios8.1中做适配
48     {
49         [UIView animateWithDuration:0.28 animations:^{
50             self.searchDisplayController.searchBar.frame = CGRectMake(0, 64, 320, 44);
51             self.tv_table.frame = CGRectMake(0, 44, 320, 524);
52         }];
53         
54     }
55     [self.searchDisplayController.searchBar setShowsCancelButton:YES];
56 }

  上面重要代码!如需要完整代码给发邮件1581758003@qq.com!

 

posted @ 2015-01-14 14:41  解忧杂货店  阅读(1451)  评论(0)    收藏  举报