多个文本的滚动视图字段不起作用

时间:2013-05-03 09:41:11

标签: uiscrollview uitextfield

嗨我可以很容易地滚动到一个文本框工作,但是当我添加10个文本框,并使用来自苹果文档的代码时,我无法弄清楚如何让它委托10个字段中的任何一个来触摸滚动视图,我无法弄清楚如何将activeField连接到有问题的textField。我认为那就是我摔倒了,答案就在于代表团

@interface ImmyViewController ()

@end

@implementation ImmyViewController
@synthesize activeField;
@synthesize scrollView;
@synthesize text1;
@synthesize text2;
@synthesize text3;
@synthesize text4; 
@synthesize text5;
@synthesize text6;
@synthesize text7;
@synthesize text8;
@synthesize text9;
@synthesize text10;

- (void)viewDidLoad
{
    [super viewDidLoad];

    text1.delegate =self;
    text2.delegate =self;
    text3.delegate =self;
    text4.delegate =self;
    text5.delegate =self;
    text6.delegate =self;
    text7.delegate =self;
    text8.delegate =self;
    text9.delegate =self;
    activeField.delegate=self;

    text10.delegate =self;

// Do any additional setup after loading the view, typically from a nib.
//---set the viewable frame of the scroll view---
    scrollView.frame = CGRectMake(0, 0, 320, 460);

//---set the content size of the scroll view---
    [scrollView setContentSize:CGSizeMake(320, 833)];

}

//在视图控制器设置代码中的某处调用此方法。      - (void)registerForKeyboardNotifications     {         [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWasShown :)                                                     name:UIKeyboardDidShowNotification对象:nil];

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(keyboardWillBeHidden:)
                                             name:UIKeyboardWillHideNotification object:nil];

}

//发送UIKeyboardDidShowNotification时调用。 - (void)keyboardWasShown:(NSNotification *)aNotification {     NSDictionary * info = [aNotification userInfo];     CGSize kbSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue] .size;

UIEdgeInsets contentInsets = UIEdgeInsetsMake(0.0, 0.0, kbSize.height, 0.0);
scrollView.contentInset = contentInsets;
scrollView.scrollIndicatorInsets = contentInsets;

// If active text field is hidden by keyboard, scroll it so it's visible
// Your application might not need or want this behavior.
CGRect aRect = self.view.frame;
aRect.size.height -= kbSize.height;
if (!CGRectContainsPoint(aRect, activeField.frame.origin) ) {
    CGPoint scrollPoint = CGPointMake(0.0, text10.frame.origin.y-kbSize.height);
    [scrollView setContentOffset:scrollPoint animated:YES];
}

}

//发送UIKeyboardWillHideNotification时调用      - (void)keyboardWillBeHidden:(NSNotification *)aNotification     {

    UIEdgeInsets contentInsets = UIEdgeInsetsZero;
    scrollView.contentInset = contentInsets;
    scrollView.scrollIndicatorInsets = contentInsets;
 }

- (void)textFieldDidBeginEditing:(UITextField *)textField
{
    activeField = textField;
}

- (void)textFieldDidEndEditing:(UITextField *)textField
{
    activeField = nil;
}

1 个答案:

答案 0 :(得分:1)

您可以使用textFieldDidBeginEditing管理所有文本字段,只需在此代码中替换您的值。

- (void)textFieldDidBeginEditing:(UITextField *)textField{
    if (textField.tag==1) {
        [scroll_view setContentOffset:CGPointMake(0, 0)animated:YES];
    }
    if (textField.tag==2) {
        [scroll_view setContentOffset:CGPointMake(0, 81)animated:YES]; 
    }
    if (textField.tag ==3) {
        [scroll_view setContentOffset:CGPointMake(0, 115)animated:YES]; 
    }
    if (textField.tag ==4) {
        [scroll_view setContentOffset:CGPointMake(0, 150)animated:YES]; 
    }
    if (textField.tag ==5) {
        [scroll_view setContentOffset:CGPointMake(0, 185)animated:YES]; 
    }
    if (textField.tag ==6) {
        [scroll_view setContentOffset:CGPointMake(0, 220)animated:YES]; 
    }

}