【发布时间】:2023-04-01 22:10:01
【问题描述】:
我正在尝试在选择某个文本字段或TextView而不是我拥有的每个文本字段时才能移动。该视图有 4 个文本字段和一个文本视图。当键盘被激活时,我只希望第 4 个文本字段和文本视图向上移动。 (因为键盘覆盖了文本字段和文本视图) 我尝试了这里给出的许多建议,但没有一个对我有用。
我找到了一个示例 (https://stackoverflow.com/a/21257034/5292561),说明我希望它的外观如何,但是当单击每个文本字段时,视图会向上移动,而不是当我仅单击第 4 个文本字段或文本视图时。
注意:我想避免使用滚动视图,因为我不喜欢它的使用方式。我读过关于它的负面消息。
我还在努力学习,所以请多多包涵。 提前致谢
这是我想要在单击文本字段和文本视图时向上移动的文本字段和文本视图的代码:
//dienstPicker input and styling
self.dienstPicker = [[UIPickerView alloc] init];
self.dienstPicker.delegate = self;
self.dienstPicker.dataSource = self;
self.dienstPicker.showsSelectionIndicator = YES;
[self.dienstPicker selectRow:1 inComponent:0 animated:YES];
//UITextField *textfield = [UIResponder currentFirstResponder];
[self.dienstTextField setInputView:_dienstPicker];
UIToolbar *toolBar2=[[UIToolbar alloc] initWithFrame: CGRectMake(0, 0, 320, 44)];
[toolBar2 setTintColor:[UIColor grayColor]];
UIBarButtonItem *doneBtn2=[[UIBarButtonItem alloc] initWithTitle:@"Done"
style:UIBarButtonItemStylePlain
target:self
action:@selector(ShowSelectedOption2)];
UIBarButtonItem *space2= [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace
target:nil
action:nil];
[toolBar2 setItems:[NSArray arrayWithObjects:space2, doneBtn2, nil]];
[self.dienstTextField setInputAccessoryView:toolBar2];
self.dienstArray = @[@"test1",@"test2"];
self.omschrijvingTextView.delegate = self;
self.omschrijvingTextView.layer.borderWidth = 1.0f;
self.omschrijvingTextView.layer.borderColor = [[UIColor lightGrayColor] CGColor];
UIToolbar *toolBar4=[[UIToolbar alloc] initWithFrame: CGRectMake(0, 0, 320, 44)];
[toolBar4 setTintColor:[UIColor grayColor]];
UIBarButtonItem *doneBtn4=[[UIBarButtonItem alloc] initWithTitle:@"Done"
style:UIBarButtonItemStylePlain
target:self
action:@selector(ShowDescription)];
UIBarButtonItem *space4= [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace
target:nil
action:nil];
[toolBar4 setItems:[NSArray arrayWithObjects:space4, doneBtn4, nil]];
[self.omschrijvingTextView setInputAccessoryView:toolBar4];
CGRect textViewFrame = CGRectMake(0, 0, 320, 44);
UITextView *omschrijvingTextView = [[UITextView alloc] initWithFrame:textViewFrame];
omschrijvingTextView.returnKeyType = UIReturnKeyDone;
pragma mark - UIPickerViewDataSource
-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {
return 1;
}
-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component {
if ([pickerView isEqual: _dienstPicker]){
return [self.dienstArray count];
} else if ([pickerView isEqual: _projectPicker]){
return [self.projectArray count];
} else return 0;
}
pragma mark - UIPickerViewDelegate
-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
if ([pickerView isEqual: _dienstPicker]){
return self.dienstArray[row];
} else if ([pickerView isEqual: _projectPicker]){
return self.projectArray[row];
} else return 0;
}
-(void)pickerView:(UIPickerView *)pickerView selectRow:(NSInteger)row inComponent:(NSInteger)component {
if ([pickerView isEqual: _dienstPicker]){
self.dienstTextField.text = self.dienstArray[row];
} else if ([pickerView isEqual: _projectPicker]){
self.projectTextField.text = self.projectArray[row];
}
}
【问题讨论】:
-
您必须首先检查文本字段是否是第 4 个文本字段,然后只调用向上推送视图的方法,在那些指南中他们根本没有检查任何内容,您可以通过打电话给
UITextField *textfield = [UIResponder currentFirstResponder]; -
@Tj3n,我不想要滚动视图,因为我读了几次它不好用。我看过那个帖子,这不是我要找的。span>
-
在您的编码中应用我的以下答案。如果有效,请勾选我的答案。因为它对其他观众看到您的问题时很有帮助。
标签: ios objective-c