【问题标题】:iPhone scrolling the view up when keyboard is open键盘打开时iPhone向上滚动视图
【发布时间】:2010-05-11 18:06:05
【问题描述】:

我知道这个问题非常普遍,我已经阅读了很多答案,但无法理解代码的工作原理。这有效:

-(void)textFieldDidBeginEditing:(UITextField *)sender
{
if ([sender isEqual:txtLeaveAddyLine1])
{
    //move the main view, so that the keyboard does not hide it.
    if  (self.view.frame.origin.y >= 0)
    {
        [self setViewMovedUp:YES];
    }
} 
}

在这个例子中,txtLeaveAddy 是第一个被键盘隐藏的 UITextField,它的作用就像一个魅力。当我循环浏览屏幕上的文本字段时,当用户进入该 txtLeaveAddyLine1 字段时,它会向上滚动。但是,当我尝试在 txtLeaveAddyLine1 字段下方添加字段时 - 没有任何反应。例如:

-(void)textFieldDidBeginEditing:(UITextField *)sender
{
    if ([sender isEqual:txtLeaveAddyLine1])
    {
        //move the main view, so that the keyboard does not hide it.
        if  (self.view.frame.origin.y >= 0)
        {
            [self setViewMovedUp:YES];
        }
    } 
    if ([sender isEqual:txtLeaveAddyLine2])
    {
        //move the main view, so that the keyboard does not hide it.
        if  (self.view.frame.origin.y >= 0)
        {
            [self setViewMovedUp:YES];
        }
    } 
}

我没有正确使用这个功能吗?

【问题讨论】:

    标签: iphone view scroll


    【解决方案1】:

    执行此操作的常用方法是将文本字段放在表格视图中。当文本字段开始编辑时,获取其所在单元格的索引路径并调用:

    [tableView scrollToRowAtIndexPath:indexPath 
                     atScrollPosition:UITableViewScrollPositionMiddle 
                             animated:YES];
    

    【讨论】:

    • 如何在表格视图中设置 UITextFields 和 Labels?每次我尝试在表格视图上放置一个文本字段或标签时,这真的很困难——它不想让我把它放在某些地方。
    • 创建一个带有标签和文本字段的自定义 UITableViewCell。然后使用该单元格填充表格。
    【解决方案2】:
    【解决方案3】:

    setViewMovedUp 不是内置的 - 我认为它的代码来自 Apple 示例。 (如果您的版本与我发现的版本不同,则以下可能不适用...)

    它不会神奇地移动到正确的位置,它只是将视图移动一个固定的量。我想您需要查看该函数并确定视图需要为每个字段移动多远,然后修改视图以根据字段位置更改视图的移动量。要么用 select case 语句硬连线一些简单的东西,要么传入发送者并查看它的框架以找出将视图移动到的位置。

    【讨论】:

    • 请参阅下面的 Rob 自己的答案 - 似乎完美地涵盖了它。
    猜你喜欢
    • 2016-12-17
    • 2022-10-09
    • 1970-01-01
    • 2017-08-06
    • 1970-01-01
    • 2019-02-08
    • 2018-05-08
    • 1970-01-01
    • 2020-12-06
    相关资源
    最近更新 更多