【问题标题】:iPhone - Editing UITextField Moving Other Views to the RightiPhone - 编辑 UITextField 将其他视图向右移动
【发布时间】:2015-11-13 10:47:38
【问题描述】:

在我加载的初始视图控制器中,我的子视图之一是 UITextField。我还有主视图的其他子视图(即四个标签、一个选择器视图和两个按钮)。当我尝试编辑文本字段时,所有其他子视图都向右移动。我不知道为什么会这样。我什至没有代码适用于编辑文本字段时发生的事情。但是,我确实有一些代码可以用来对齐我的所有子视图(包括文本字段)。这是代码:

- (void)viewDidLoad {
    [super viewDidLoad];
    self.stopPickerView.dataSource = self;
    self.stopPickerView.delegate = self;
    selectedEntry=@"";
    self.inputField.delegate=self;

    // Do any additional setup after loading the view, typically from a nib.



}

-(void)viewDidAppear:(BOOL)animated{

    int width=self.view.bounds.size.width;
    int height=self.view.bounds.size.height;

    headingLabel.frame=CGRectMake(headingLabel.frame.origin.x, headingLabel.frame.origin.y,self.view.bounds.size.width-self.view.bounds.size.width/5, headingLabel.frame.size.height);
    headingLabel.center=CGPointMake(width/2,height/9);


    stopPickerView.center=CGPointMake(width/2, height/5);
    setStop.center=CGPointMake(width/2, height/2.2);
    orLabel.center=CGPointMake(width/2, height/1.7);
    wakeUpLabelOne.frame=CGRectMake(wakeUpLabelOne.frame.origin.x, wakeUpLabelOne.frame.origin.y,self.view.bounds.size.width-self.view.bounds.size.width/2, self.view.bounds.size.height-self.view.bounds.size.height/19.2);


          wakeUpLabelOne.center=CGPointMake(width/3.5, height/1.4);
    NSLog(@"%f",wakeUpLabelOne.frame.size.width);
    wakeUpLabelTwo.center=CGPointMake(width/1.1, height/1.4);
    inputField.center=CGPointMake(width/1.5, height/1.4);
    finalSetButton.center=CGPointMake(width/2, height/1.2);
    [wakeUpLabelTwo adjustsFontSizeToFitWidth];


}

- (int)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
    return 1;
}

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {

    selectedEntry = [_pickerData objectAtIndex:row];

}

// The number of rows of data
- (int)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
    return _pickerData.count;
}

// The data to return for the row and component (column) that's being passed in
- (NSString*)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
    return _pickerData[row];
}

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    [inputField resignFirstResponder];
}

- (BOOL)textFieldShouldReturn:(UITextField *)textField {
    [textField resignFirstResponder];
    return NO;
}

如果您对为什么会发生这种情况有任何想法,或者您想了解更多信息,请将其留在 cmets 中。

【问题讨论】:

  • 您将该框架配置放置在哪个块中?请尽可能提供完整的代码。如果你不介意我问,你不能只使用约束来保持你的视图对齐吗?
  • @Teffi 我将框架配置放在 viewDidAppear 块中。我在上面添加了更多代码(但我不确定它是否会有所帮助)。此外,我尝试使用约束,但无法让它在所有屏幕尺寸上正常工作。非常感谢您的帮助。

标签: ios objective-c iphone uitextfield alignment


【解决方案1】:

我知道为什么会这样了。出于某种原因,将我的框架配置放在 viewDidAppear 方法中是个坏主意,而且会搞砸一些事情。对此的解决方法是将我的框架配置放在 viewDidLayoutSubviews 方法中。问题立即得到解决。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-20
    • 2010-12-30
    • 2014-11-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多