Ravi Khatri
Ravi Khatri

Reputation: 1

Keyboard response Slow in ios

I am creating dynamic screen and creating text field dynamically When I touch the text field and start writing then my keyboard response is slow and take almost 3-4 seconds to when a character is displayed on the screen. How can i fix this problem? Thanks in advance.

    - (BOOL) textFieldShouldBeginEditing:(UITextField *)textField
{
    NSInteger componentType;
    BOOL isEditable = YES;


    for (int i = 0; i < self.screenComponentData.count; i++)
    {
        if ([self.keyboardType[i] intValue] == NUMERIC)
        {
            [textField setKeyboardType:UIKeyboardTypeNumberPad];

        }
        else if([self.keyboardType[i] intValue] == ALPHA)
        {
            [textField setKeyboardType:UIKeyboardTypeAlphabet];

        }
        else if([self.keyboardType[i] intValue] == ALPHANUMERIC)
        {
            [textField setKeyboardType:UIKeyboardTypeDefault];
        }

        NSString *str = [self.entityMap objectAtIndex:i];
//        str = [str substringFromIndex:2];
        if (textField.tag == [str intValue])
        {
          componentType = [self.screenComponentData[i][3] intValue];
            if ([self.screenComponentData[i][7] characterAtIndex:27]  == NON_EDITABLE)
            {
                isEditable = NO;
            }
            break;
        }
    }

    if (componentType == DATE_PICKER || componentType == TIME_PICKER || componentType == VALUE_PICKER)
    {
        [self textFieldTouched:textField];
        return NO;
    }
    else if(isEditable == NO)
    {
        //Dont show picker  & dont allow user to edit too.SHOW DEFAULT TEXT
        return NO;
    }
    else
    {
        return YES;
    }
}


- (void) textFieldTouched:(UITextField *)textField
{
    NSArray *test1;
    NSArray *compoType;
    NSArray *tag_Table_Name;  //<--table to where to get data
    for (int index = 0; index < self.componentType.count ; index++) {
//   pooja's code'
            if (textField.tag ==60  ||textField.tag ==865 ||textField.tag ==1202 || textField.tag==48)
             {

            tag_Table_Name=[DBOperator getDataForQuery:[NSString stringWithFormat:@"SELECT COL13 FROM %@ WHERE COL0='%@' and COL2='%ld'",TBSYS0001,self.screenId,(long)textField.tag]];


            compoType=[DBOperator getDataForQuery:[NSString stringWithFormat:@"SELECT COL3 FROM %@ WHERE COL0='%@' and COL2='%ld'",TBSYS0001,self.screenId,(long)textField.tag]];
        test1=[DBOperator getDataForQuery:[NSString stringWithFormat:@"SELECT COL1 FROM TB%@",tag_Table_Name[0][0]]];

                 if (self.textField.tag== 61)  {
                        textField.text=@"";
                 }

        }else if (textField.tag==61){

         tag_Table_Name=[DBOperator getDataForQuery:[NSString stringWithFormat:@"SELECT COL13 FROM %@ WHERE COL0='%@' and COL2='%ld'",TBSYS0001,self.screenId,(long)textField.tag]];

            compoType=[DBOperator getDataForQuery:[NSString stringWithFormat:@"SELECT COL3 FROM %@ WHERE COL0='%@' and COL2='%ld'",TBSYS0001,self.screenId,(long)textField.tag]];
            test1=[DBOperator getDataForQuery:[NSString stringWithFormat:@"SELECT COL1 FROM TB%@ WHERE COL2='%@'",tag_Table_Name[0][0],self.codeString]];

        }else if (textField.tag==1159){

            tag_Table_Name=[DBOperator getDataForQuery:[NSString stringWithFormat:@"SELECT COL13 FROM %@ WHERE COL0='%@' and COL2='%ld'",TBSYS0001,self.screenId,(long)textField.tag]];

            compoType=[DBOperator getDataForQuery:[NSString stringWithFormat:@"SELECT COL3 FROM %@ WHERE COL0='%@' and COL2='%ld'",TBSYS0001,self.screenId,(long)textField.tag]];
            test1=[DBOperator getDataForQuery:[NSString stringWithFormat:@"SELECT COL1 FROM TB%@",tag_Table_Name[0][0]]];


        }else if (textField.tag ==1760){

            tag_Table_Name=[DBOperator getDataForQuery:[NSString stringWithFormat:@"SELECT COL13 FROM %@ WHERE COL0='%@' and COL2='%ld'",TBSYS0001,self.screenId,(long)textField.tag]];


            compoType=[DBOperator getDataForQuery:[NSString stringWithFormat:@"SELECT COL3 FROM %@ WHERE COL0='%@' and COL2='%ld'",TBSYS0001,self.screenId,(long)textField.tag]];
            test1=[DBOperator getDataForQuery:[NSString stringWithFormat:@"SELECT COL1 FROM TB%@",tag_Table_Name[0][0]]];


        }else if (textField.tag==55){

            tag_Table_Name=[DBOperator getDataForQuery:[NSString stringWithFormat:@"SELECT COL13 FROM %@ WHERE COL0='%@' and COL2='%ld'",TBSYS0001,self.screenId,(long)textField.tag]];

            compoType=[DBOperator getDataForQuery:[NSString stringWithFormat:@"SELECT COL3 FROM %@ WHERE COL0='%@' and COL2='%ld'",TBSYS0001,self.screenId,(long)textField.tag]];
            test1=[DBOperator getDataForQuery:[NSString stringWithFormat:@"SELECT COL1 FROM TB%@ WHERE COL2='%@'",tag_Table_Name[0][0],self.codeString]];

        }else if (textField.tag==861){

            tag_Table_Name=[DBOperator getDataForQuery:[NSString stringWithFormat:@"SELECT COL13 FROM %@ WHERE COL0='%@' and COL2='%ld'",TBSYS0001,self.screenId,(long)textField.tag]];

            compoType=[DBOperator getDataForQuery:[NSString stringWithFormat:@"SELECT COL3 FROM %@ WHERE COL0='%@' and COL2='%ld'",TBSYS0001,self.screenId,(long)textField.tag]];
            test1=[DBOperator getDataForQuery:[NSString stringWithFormat:@"SELECT COL1 FROM TB%@ WHERE COL2='%@'",tag_Table_Name[0][0],self.codeString]];

        }else if (textField.tag==108 ||textField.tag == 1154 ||self.textField.tag==66){

            tag_Table_Name=[DBOperator getDataForQuery:[NSString stringWithFormat:@"SELECT COL13 FROM %@ WHERE COL0='%@' and COL2='%ld'",TBSYS0001,self.screenId,(long)textField.tag]];

            compoType=[DBOperator getDataForQuery:[NSString stringWithFormat:@"SELECT COL3 FROM %@ WHERE COL0='%@' and COL2='%ld'",TBSYS0001,self.screenId,(long)textField.tag]];
            test1=[DBOperator getDataForQuery:[NSString stringWithFormat:@"SELECT COL1 FROM TB%@",tag_Table_Name[0][0]]];

        }else if (textField.tag==1153 ){

            tag_Table_Name=[DBOperator getDataForQuery:[NSString stringWithFormat:@"SELECT COL13 FROM %@ WHERE COL0='%@' and COL2='%ld'",TBSYS0001,self.screenId,(long)textField.tag]];

            compoType=[DBOperator getDataForQuery:[NSString stringWithFormat:@"SELECT COL3 FROM %@ WHERE COL0='%@' and COL2='%ld'",TBSYS0001,self.screenId,(long)textField.tag]];
            test1=[DBOperator getDataForQuery:[NSString stringWithFormat:@"SELECT COL1 FROM TB%@",tag_Table_Name[0][0]]];

        }

        else{
            tag_Table_Name=[DBOperator getDataForQuery:[NSString stringWithFormat:@"SELECT COL13 FROM %@ WHERE COL0='%@' and COL2='%ld'",TBSYS0001,self.screenId,(long)textField.tag]];

            compoType=[DBOperator getDataForQuery:[NSString stringWithFormat:@"SELECT COL3 FROM %@ WHERE COL0='%@' and COL2='%ld'",TBSYS0001,self.screenId,(long)textField.tag]];
           test1=[DBOperator getDataForQuery:[NSString stringWithFormat:@"SELECT COL1 FROM TB%@",tag_Table_Name[0][0]]];
        }

        if (textField.tag == 64){


            self.tagForFollowUpDate = 64;
            self.configure.getFollowConfigDate = self.tagForFollowUpDate;
        }

        if (textField.tag == 45){


            self.tagForDOB = 45;
            self.configure.getDOB = self.tagForDOB;
        }
    }

        self.textfieldTAG = textField.tag;

    NSInteger compo=[compoType[0][0]intValue];
    //    NSLog(@"COMPO->%d",compo);

    switch (compo) {
        case DATE_PICKER:
            [self displayDatePicker:textField];
            break;

        case TIME_PICKER:
            [self displayTimePicker:textField];
            break;

        case VALUE_PICKER:
        {
            if (self.popOver != nil && [self.popOver isPopoverVisible])
            {
                [self.popOver dismissPopoverAnimated:YES];
            }



            RMPickerViewController *pickerVC = [RMPickerViewController pickerController];
            pickerVC.delegate = self;
            pickerVC.backgroundColor = [UIColor whiteColor];
            //            pickerVC.tintColor = [UIColor yellowColor];
            //            pickerVC.selectedBackgroundColor = [UIColor yellowColor];

            if (self.commanArray != nil && self.commanArray.count > 0)
            {
                [self.commanArray removeAllObjects];
            }
            [self.commanArray addObjectsFromArray:[self getdropListDataWithValue:test1]];  //<---  Value Picker
            [pickerVC showFromRect:textField.frame  inView:self.scrollView];

            break;
        }

        default:
        {
            //To get the values for making the syncData string
            for (int i = 0; i < self.screenComponentData.count; i++)
            {
                NSString *str=[self.entityMap objectAtIndex:i];
                //        str = [str substringFromIndex:2];
                if (textField.tag == [str intValue])
                {
                    [self.valueArray replaceObjectAtIndex:i withObject:textField.text];
                    [self.savingArray replaceObjectAtIndex:i withObject:textField.text];

                    break;
                }
            }

            [textField setKeyboardType:UIKeyboardTypeDefault];

            break;
        }
    }//end of switch case;
;

}// end of textFieldTouched

Upvotes: 0

Views: 1216

Answers (1)

Sudhin Davis
Sudhin Davis

Reputation: 2020

Make sure that the main thread is not busy, that is may be a background task is running and this will slow down the process. It maynot be the problem with textfield.

Try checking some for loops or synchronous tasks working in background..

Upvotes: 1

Related Questions