1

在 iPhone 上,我发现当键盘出现时,系统会将contentInsettableView 设置为UIEdgeInsets(0, 0, 216, 0),因为键盘高度是 216。我认为这在为最新的 iOS 设计应用程序时很方便,过去我必须计算 tableView 大小当键盘自己出现时。

但是我必须支持iOS5,所以我想知道如何为我禁用这个自动“青睐”?如果我设置 self.searchTipsController.tableView.contentInset = UIEdgeInsetsZero;,滚动指示器将不会显示。最后我必须检测系统版本来单独处理它。

我想知道这个功能是从哪个版本开始的?6.0 还是 6.1?

- (void) keyboardSizeChange:(NSNotification *)aNotification
{
    NSDictionary* d = [aNotification userInfo];
    CGRect r = [[d objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue];
    if(r.origin.y<[UIScreen mainScreen].bounds.size.height)
    {
        CGRect convertRect = [self.view convertRect:r fromView:[UIApplication sharedApplication].keyWindow];
        CGRect viewBounds = self.view.bounds;
        CGRect tipsFrame = CGRectMake(0, 0, viewBounds.size.width, convertRect.origin.y);

        if(SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"6.1"))
        {

        }else
        {
            self.searchTipsController.view.frame = tipsFrame;
            self.searchTipsController.tableView.contentInset = UIEdgeInsetsZero;
        }
    }
}

我更改了我的代码,当键盘抬起时,删除 tableview 然后将其添加回来,这一次看起来正确..

- (void) keyboardSizeChange:(NSNotification *)aNotification
{
    NSDictionary* d = [aNotification userInfo];
    CGRect r = [[d objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue];
    if(r.origin.y<[UIScreen mainScreen].bounds.size.height)
    {
        CGRect convertRect = [self.view convertRect:r fromView:[UIApplication sharedApplication].keyWindow];
        CGRect viewBounds = self.view.bounds;
        CGRect tipsFrame = CGRectMake(0, 0, viewBounds.size.width, convertRect.origin.y);


        self.searchTipsController.view.frame = tipsFrame;
        self.searchTipsController.tableView.contentInset = UIEdgeInsetsZero;

        [self.searchTipsController.view removeFromSuperview];
        [self.view addSubview:self.searchTipsController.view];

    }
}

不过还是希望有人能回答我的问题,谢谢。

4

0 回答 0