单击UITextField使UIScrollView更小

时间:2013-05-30 11:22:12

标签: ios objective-c uiscrollview uitextfield

我有一个UIScrollView,而UIScrollViewUITextFeild中有UIScrollViewUITextfFeild。我的问题是,点击UIScrollView后,UIScrollView变得比我设置的要小。

我设置了-(void) viewDidAppear:(BOOL)animated { myScrollView.contentSize = CGSizeMake (320,800); }

UITextfeild

当我点击UIScrollView时,#import "TestViewController.h" @interface TestViewController () @end @implementation TestViewController AVAudioPlayer *player; @synthesize myScrollView; @synthesize questionLabel, actionBarLabel, questionPlaceholder, commentsLabel; @synthesize imageView, firstNameTextField,commentsTextField; - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. myScrollView.maximumZoomScale = 0.0; myScrollView.minimumZoomScale = 0.0; myScrollView.clipsToBounds = YES; myScrollView.delegate = self; [myScrollView addSubview:imageView]; [myScrollView setScrollEnabled:YES]; [myScrollView addSubview:questionLabel]; [myScrollView addSubview:firstNameTextField]; [myScrollView addSubview:commentsTextField]; [myScrollView addSubview:actionBarLabel]; [myScrollView addSubview:questionPlaceholder]; [myScrollView addSubview:commentsLabel]; UIButton *btn1 = [UIButton buttonWithType:UIButtonTypeRoundedRect]; [btn1 setFrame:CGRectMake(10.0f, 600.0f, 300.0f, 42.0f)]; [btn1 setTitle:[NSString stringWithFormat:@"Choose an Option"] forState:UIControlStateNormal]; [btn1 addTarget:self action:@selector(showActionSheet:) forControlEvents:UIControlEventTouchUpInside]; [super viewDidLoad]; [self.myScrollView addSubview:btn1]; [self performSelector:@selector(showGradientForQuestions1) withObject:nil afterDelay:0]; NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; NSData *imageData = [defaults dataForKey:@"image"]; UIImage *contactImage = [UIImage imageWithData:imageData]; NSString *frontName = [defaults objectForKey:@"firstname"]; NSString *comments = [defaults objectForKey:@"commentsText"]; // Update the UI elements with the saved data imageView.image = contactImage; firstNameTextField.text = frontName; commentsTextField.text = comments; firstNameTextField.delegate = self; commentsTextField.delegate = self; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; } -(void)imagePickerControllerDidCancel:(UIImagePickerController *)picker { [self dismissViewControllerAnimated:YES completion:nil]; } - (IBAction) save:(id)sender { [firstNameTextField resignFirstResponder]; [commentsTextField resignFirstResponder]; // Create instace of NSData UIImage *contactImage = imageView.image; NSData *imageData = UIImageJPEGRepresentation(contactImage, 100); NSString *frontName = [firstNameTextField text]; NSString *comments = [commentsTextField text]; // Store the data NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; [defaults setObject:imageData forKey:@"image"]; [defaults setObject:frontName forKey:@"firstname"]; [defaults setObject:comments forKey:@"commentsText"]; [defaults synchronize]; NSLog(@"Data saved"); UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Data Saved!" message:@" Successfully saved to cache" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil]; [alert show]; } - (void)viewDidUnload { imageView = nil; firstNameTextField = nil; commentsTextField = nil; myScrollView = nil; [super viewDidUnload]; // Release any retained subviews of the main view. // e.g. self.myOutlet = nil; } -(BOOL) textFieldShouldReturn:(UITextField *)textField{ [firstNameTextField resignFirstResponder]; [commentsTextField resignFirstResponder]; [imageView resignFirstResponder]; [myScrollView resignFirstResponder]; [self.navigationController setNavigationBarHidden:NO]; return YES; } -(void) viewDidAppear:(BOOL)animated { myScrollView.contentSize = CGSizeMake (320,800); } @end 从800变为小约500?

{{1}}

enter image description here

2 个答案:

答案 0 :(得分:0)

可能是因为你的scrollView剪辑要绑定吗?

myScrollView.clipsToBounds = YES;

答案 1 :(得分:0)

当您单击textview或textfield时,键盘会出现并隐藏屏幕的一部分,您将无法滚动视图的其余部分直到键盘移动。尝试在textFieldDidBeginEditing函数中增加滚动视图的高度,并在textFieldDidEndEditing函数中减少相同的数量。

scrollView.contentSize=CGSizeMake(scrollView.contentSize.width,scrollView.contentSize.height+KeyBoardSizePixel);