我有3个文本字段和2个按钮。当我点击文本字段时,键盘出现,并且由于键盘而隐藏了2个按钮。是否可以移动键盘上方的按钮,当键盘退出时,按钮应该回到初始位置。
答案 0 :(得分:4)
//Declare a delegate, assign your textField to the delegate and then
-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDidShow:) name:UIKeyboardDidShowNotification object:nil];
return YES;
}
- (BOOL)textFieldShouldEndEditing:(UITextField *)textField {
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDidHide:) name:UIKeyboardDidHideNotification object:nil];
[self.view endEditing:YES];
return YES;
}
- (void)keyboardDidShow:(NSNotification *)notification
{
// Assign new frame to your view
[self.view setFrame:CGRectMake(0,-110,320,460)]; //here taken -20 for example i.e. your view will be scrolled to -20. change its value according to your requirement.
}
-(void)keyboardDidHide:(NSNotification *)notification
{
[self.view setFrame:CGRectMake(0,0,320,460)];
}
编辑: - 使用[UIScreen mainScreen]界限为视图指定宽度和高度] .size
答案 1 :(得分:0)
执行此操作的最佳方法是使用库,这里是链接https://github.com/michaeltyson/TPKeyboardAvoiding,您需要做的就是在UIScrollView中获取所有文本字段和按钮,并在故事板中将scrollview类指定为“TPKeyboardAvoidingScrollView”。 /> 视图控制器类中将有零行代码来管理您的需求,无论您希望在整个应用程序中执行此操作,您都可以这样做。
答案 2 :(得分:-1)
是的,您可以更新查看框架/约束,以便向用户显示按钮。
此外,您可以创建一个工具栏,其中包含这些按钮。在聚焦文本字段时,您可以在键盘上方添加工具栏。
这将是更好的用户体验。
答案 3 :(得分:-1)
最好使用scrollview,或者为了方便起见,修改下面的代码。
override func viewDidLoad() {
super.viewDidLoad()
let tapGesture = UITapGestureRecognizer(target: self, action: "tap:")
view.addGestureRecognizer(tapGesture)
self.txtUserEmail.delegate = self;
self.txtPassword.delegate = self;
}
func tap(gesture: UITapGestureRecognizer) {
self.txtUserEmail.resignFirstResponder()
self.txtPassword.resignFirstResponder()
}