我正在制作一个在显示键盘时将视图(当iPone 4s/5/5c/5s)向上移动的应用程序。然而,当我使用数字键入某些东西时,它会触发视图回落。 textField:shouldChangeCharactersInRange:replacementString
的代码更改文本,然后将其分配回教科书。向UITextField赋值时UIView向下移动
- (BOOL) textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
NSString* totalString = [NSString stringWithFormat:@"%@%@",textField.text,string];
if(textField.tag==102) {
if (([textField.text isEqualToString:@"0"]) && (textField.text.length == 1)) {
textField.text = @"";
NSLog(@"Zero Encountered");
return NO;
}
if (range.length == 1) {
// Delete button was hit.. so tell the method to delete the last char.
textField.text = [_iOSApiService_model formatPhoneNumber:totalString deleteLastChar:YES];
} else {
textField.text = [_iOSApiService_model formatPhoneNumber:totalString deleteLastChar:NO];
}
return YES;
}
return YES;
}
-(void) keyboardWasShown:(NSNotification *)notification {
//The keyboard was shown, move movableView objects UP
NSLog(@"value of _keyboardshownUp is %i",_keyboardshownUp);
if (_keyboardshownUp == 1) {
//Keyboard was already shown
} else {
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.5];
//This will move the frame back to place
_movableView.frame = CGRectMake(_movableView.frame.origin.x,
_movableView.frame.origin.y+_variableMove,
_movableView.frame.size.width,
_movableView.frame.size.height);
[UIView commitAnimations];
NSLog(@"Move View up");
_keyboardshownUp = 1;
}
}
-(void) keyboardWillHide:(NSNotification *)notification {
//The keyboard was shown, move movableView objects down
NSLog(@"value of _keyboardshownUp is %i",_keyboardshownUp);
if (_keyboardshownUp == 0) {
//Keyboard was already hiden
} else {
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.5];
//This will move the frame back to place
_movableView.frame = CGRectMake(_movableView.frame.origin.x,
_movableView.frame.origin.y-_variableMove,
_movableView.frame.size.width,
_movableView.frame.size.height);
[UIView commitAnimations];
NSLog(@"Move View Down");
_keyboardshownUp = 0;
}
}
我连同UIKeyboardWillHideNotification
和UIKeyboardDidShowNotification
这样做。如果我禁用textField:shouldChangeCharactersInRange:replacementString
那么没有问题。但是,当我为“问题”UITextField
分配一个值时,就好像键盘被隐藏(即使它不是)并且Main UIView
恢复到其原始位置,因此键盘遮挡视图。请帮忙!!!
这是一个很好的事情:)问题是,应该ChangeCharactersInRange为文本字段textField.text分配一个值,它会降低视图,然后阻止文本框对用户可见。你的榜样是否消除了这个?没有机会检查它,但:)谢谢你SOOOOOOO很多! –
只有当键盘消失时,我才会将视图动画化。那是你想要的吗?在键盘动画工具中,没有将textfield委托设置为主库。 –
在我的代码中,如果我删除textfield.text =,我不会遇到视图下降的问题。当我改变对象的值时,它会以某种方式触发改变。当您使用textField.text设置textField的文本值时,我也对此感到困惑 –