SCLAlertView如何让内部TextField成为第一响应者自动唤起键盘
在SCLAlertView中让嵌入的TextField自动成为第一响应者
嘿,这个需求其实很好实现,核心要点就是等弹窗的显示动画完全结束后,再让TextField获取焦点——要是提前调用方法,很可能因为视图还没完全渲染而失效。下面分步骤给你讲具体操作:
第一步:创建弹窗并保留TextField的引用
先初始化SCLAlertView实例,添加TextField的时候一定要把这个TextField对象存下来,后面要通过它调用成为第一响应者的方法。比如Swift代码:let alert = SCLAlertView() // 添加TextField并保存引用 let inputTextField = alert.addTextField("请输入内容") // 可以顺便设置TextField的基础属性,比如键盘类型、占位符 inputTextField.keyboardType = .default如果用Objective-C,写法是这样:
SCLAlertView *alert = [[SCLAlertView alloc] init]; UITextField *inputTextField = [alert addTextField:@"请输入内容"]; inputTextField.keyboardType = UIKeyboardTypeDefault;第二步:设置动画完成后的回调
SCLAlertView自带了showAnimationCompletionBlock回调块,它会在弹窗的显示动画彻底结束后触发,这时候调用becomeFirstResponder()就稳了:
Swift版本:alert.showAnimationCompletionBlock = { inputTextField.becomeFirstResponder() }Objective-C版本:
alert.showAnimationCompletionBlock = ^{ [inputTextField becomeFirstResponder]; };第三步:正常显示弹窗
最后按照你的需求调用弹窗的显示方法即可,比如:
Swift:alert.showEdit(title: "输入提示", subTitle: "无需点击,直接输入", closeButtonTitle: "确认")Objective-C:
[alert showEdit:@"输入提示" subTitle:@"无需点击,直接输入" closeButtonTitle:@"确认" duration:0.0f];
这样设置之后,弹窗一加载完成,键盘就会自动弹出,TextField直接获得焦点,用户不用额外点击就能开始输入啦~
内容的提问来源于stack exchange,提问作者SergeH
相关产品推荐
相关产品推荐

