【问题标题】:iPhoneSDK: Weird bug after pushing a detailviewcontroller while the keyboard is still openiPhoneSDK:在键盘仍打开时推送详细视图控制器后出现奇怪的错误
【发布时间】:2011-08-16 13:49:33
【问题描述】:

我这里有个很奇怪的bug,就是这个场景;

-我单击 UITableView 上的文本字段之一,出现 uikeyboard,

-然后不按完成,我点击屏幕上的另一个文本字段(禁用的),

-这个禁用的文本字段推送一个详细视图控制器,

-我在详细视图上完成我的工作并返回

-惊喜!主 UITableview 不再可滚动到底部!所以我不能再编辑底部的单元格了!

这不会发生如果我在编辑后按完成(所以关闭键盘)然后单击详细视图,现在它工作正常。

我认为 resignfirstResponder 在切换到另一个视图之前没有被调用,所以我尝试将此消息发送到 tableview 中的所有文本字段..但它变得更糟。

在我推动 detailviewcontroller 之前,我也尝试在下面添加这一行,但没有奏效,这很有趣,因为这是我正常调用数字键盘的方法,当从我的自定义“完成”调用它时它可以工作按钮关闭 nuber pad

[[self view] endEditing:YES];

这就是我如何设置 uikeyboards 取决于 cellforRowAtIndex 方法中的内容

    if(somelogic){      
    cell.textField.keyboardType=UIKeyboardTypeNumberPad;                
    [self resignFirstResponder];        
    [self becomeFirstResponder];        
}

else{       
    cell.textField.keyboardType=UIKeyboardTypeDefault;
    [self resignFirstResponder];        
    [self becomeFirstResponder];        
}

有什么想法吗?

【问题讨论】:

    标签: iphone objective-c ios


    【解决方案1】:

    在推送详细视图控制器之前,只需调用 [currentTextField resignFirstResponder]

    在下面的方法中设置currentTextField

    - (void)textFieldDidBeginEditing:(UITextField *)textField {
    
        currentTextField = textField;
        // Your code here 
    }
    

    【讨论】:

    • 我试过了,但没有成功,因为 currentTextField 不是带键盘的,而是前一个。
    • 您是否正确设置了currentTextField?查看我的更新答案
    • 反正我不保留 currentTextField 有问题吗?
    • 没有。您不必保留 currentTextField,因为我们只是保留正在编辑的当前文本字段的引用
    • 正如我所说的那样不起作用..当我在该页面上徘徊一点并按下时也会使其崩溃
    【解决方案2】:

    奥卡姆剃刀。 不要让他们不点击完成按钮

    在整个屏幕上放置一个透明的 UIButton。致电[textField becomeFirstResponder] 时显示。您可以阻止人们触摸屏幕和切换文本字段,或者在点击时拨打[textField resignFirstResponder]

    【讨论】:

    • 在您的代码中,textFields 应该 resignFirstResponder,而不是 viewController。
    • 我在 S.O 中看到了这个 hack 并且效果很好,但是如果我按照你的建议制作它们 [cell.textfield resignFirstResponder],代码将不再工作,并且键盘在不编辑任何文本字段的情况下飞来飞去
    猜你喜欢
    • 2018-08-31
    • 1970-01-01
    • 2019-03-10
    • 1970-01-01
    • 2013-07-28
    • 2016-05-14
    • 2015-08-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多