gpt4 book ai didi

ios - 键盘是否有可能改变 iOS 应用程序的方向?

转载 作者:行者123 更新时间:2023-11-29 02:24:17 24 4
gpt4 key购买 nike

我有一个问题。

在我的应用程序中,我有一个包含一些文本字段的 View 。我使用 willRotateToInterfaceOrientation 方法来改变方向。此外,我更新了纵向和横向模式的文本字段框架。

当我在应用程序中设置横向模式时,一切正常,直到我点击某个文本字段并显示键盘。之后,文本字段框架返回纵向模式(但只有文本字段和标签的框架)。

当我在父 View 中旋转到横向并使用文本字段转到我的 View 时,也会发生这种情况。

键盘是否可能改变 iOS 应用的方向?我很乐意提供一些建议。

代码(我在父 View 和第二 View 中执行):

在viewDidLoad中:

[self setFramesForInterface:self.interfaceOrientation];        

方法:

- (void)setFramesForInterface:(UIInterfaceOrientation)toInterfaceOrientation {

switch (toInterfaceOrientation) {
case UIInterfaceOrientationUnknown:
[self setFramesForPortrait];
break;
case UIInterfaceOrientationPortrait:
[self setFramesForPortrait];
break;
case UIInterfaceOrientationPortraitUpsideDown:
[self setFramesForPortrait];
break;
case UIInterfaceOrientationLandscapeLeft:
[self setFramesForLandscapeLeft];
break;
case UIInterfaceOrientationLandscapeRight:
[self setFramesForLandscapeLeft];
break;
default:
break;
} }

- (void)setFramesForPortrait {
dispatch_async(dispatch_get_main_queue(), ^{
[_stationNameLabel setFrame:CGRectMake(8, 40, 105, 30)];
[_addresLabel setFrame:CGRectMake(8, 85, 105, 30)];
.........................
}); }

- (void)setFramesForLandscapeLeft {
dispatch_async(dispatch_get_main_queue(), ^{
[_stationNameLabel setFrame:CGRectMake(8, 20, 105, 30)];
[_addresLabel setFrame:CGRectMake(8, 65, 105, 30)];
...................
}); }

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
[super willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration];
[self setFramesForInterface:toInterfaceOrientation];}

最佳答案

我猜您正在使用自动布局。这就是问题的根源。

在使用自动布局时,您不能使用 setFrame: 重新定位/调整大小。您必须改为更改约束

好吧,您可以使用setFrame:,但这有点毫无意义,因为约束才是最重要的。当出现布局时,无论出于何种原因,都会遵守约束。所以发生在你身上的是:你改变了框架,但随后你触发了布局并且约束接管了一切,将一切都移回了原来的位置。

关于ios - 键盘是否有可能改变 iOS 应用程序的方向?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27744320/

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