gpt4 book ai didi

iphone - 方向键盘移动

转载 作者:行者123 更新时间:2023-12-03 21:07:50 26 4
gpt4 key购买 nike

这里有一些关于纵向文本字段移动的精彩教程。

One Two Three

另一方面,我的 View 可以旋转为纵向和横向,并且在这两种方向上键盘都会遮挡文本字段...现在,纵向和横向方向中的一个都可以工作。

所以我想知道如何才能包含两个横向方向。

这就是我正在做的事情:

-(void) keyboardWillShow:(NSNotification *)notif{
if ([serverIP isFirstResponder]){
if (isPortrait && self.view.frame.origin.y >= 0){
[self setViewMovedVertical:YES];
}
else if (!isPortrait && self.view.frame.origin.x >= 0){
[self setViewMovedHorizontal:YES];
}
}
}

移动 View 。下面是对应的方法

#define PORTRAIT_KEY_OFF 216
#define LANDSCAPE_KEY_OFF 140

-(void) setViewMovedVertical:(BOOL)movedUp{
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.4];

CGRect rect = self.view.frame;

if (movedUp){
rect.origin.y -= PORTRAIT_KEY_OFF;
rect.size.height += PORTRAIT_KEY_OFF;
}
else{
rect.origin.y += PORTRAIT_KEY_OFF;
rect.size.height -= PORTRAIT_KEY_OFF;
}

self.view.frame = rect;

[UIView commitAnimations];
}

-(void) setViewMovedHorizontal:(BOOL)moved{
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.4];

CGRect rect = self.view.frame;

if (moved){
rect.origin.x -= LANDSCAPE_KEY_OFF;
rect.size.width += LANDSCAPE_KEY_OFF;
}
else{
rect.origin.x += LANDSCAPE_KEY_OFF;
rect.size.width -= LANDSCAPE_KEY_OFF;
}

self.view.frame = rect;

[UIView commitAnimations];

}

这是将其向下移动的方法

-(IBAction) serverIPDone: (UITextField *) sender{
if ([serverIP isFirstResponder]){
if (self.view.frame.origin.y < 0){
[self setViewMovedVertical:NO];
}
if (self.view.frame.origin.x < 0){
[self setViewMovedHorizontal:NO];
}
[serverIP resignFirstResponder];
}
}

希望对您有帮助!如果我已经消除了歧义(看看我在那里做了什么?)这个问题,请告诉我!

最佳答案

终于想通了!!!!

错误所在:两种景观模式之间的原点确实发生了变化。因此,您所要做的就是检测您所处的景观版本,并根据该版本进行添加或删除!

-(IBAction) serverIPDone: (UITextField *) sender{
if ([serverIP isFirstResponder]){
if (self.view.frame.origin.y < 0){
[self setViewMovedVertical:NO];
}
if (self.view.frame.origin.x != 0){
[self setViewMovedHorizontal:NO];
}
[serverIP resignFirstResponder];
}
}

上一个确保键盘未设置。

-(void) setViewMovedVertical:(BOOL)movedUp{
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.4];

CGRect rect = self.view.frame;

if (movedUp){
rect.origin.y -= PORTRAIT_KEY_OFF;
rect.size.height += PORTRAIT_KEY_OFF;
}
else{
rect.origin.y += PORTRAIT_KEY_OFF;
rect.size.height -= PORTRAIT_KEY_OFF;
}

self.view.frame = rect;

[UIView commitAnimations];
}

-(void) setViewMovedHorizontal:(BOOL)moved{
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.4];

CGRect rect = self.view.frame;

if (moved){
if (leftLandscape)
rect.origin.x -= LANDSCAPE_KEY_OFF;
else
rect.origin.x += LANDSCAPE_KEY_OFF;
}
else{
if (leftLandscape)
rect.origin.x += LANDSCAPE_KEY_OFF;
else
rect.origin.x -= LANDSCAPE_KEY_OFF;
NSLog(@"after: %f",rect.origin.x);

}

self.view.frame = rect;

[UIView commitAnimations];

}

上一个将执行键盘的实际移动。我取消了调整大小,您可以将其添加回来。

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)x     
duration:(NSTimeInterval)duration{

if (UIInterfaceOrientationIsPortrait(x)) {
isPortrait = TRUE;
}
else {
isPortrait = FALSE;
leftLandscape = (x == UIInterfaceOrientationLandscapeLeft);
}

}

上一个将确保您正确设置变量 isPortrait 和 leftLandscape。

花了太长时间,但我终于完成!!!

关于iphone - 方向键盘移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5436339/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com