Докосване между UITextFields в iOS7

Когато е избран UITextField и има показана клавиатура, ако докосна други части на изгледа, клавиатурата изчезва.

Ако докосна друг UITextField, клавиатурата остава активна, първото текстово поле е демаркирано и нищо не се случва. След това трябва да докосна другото UITextFIeld отново, за да се извърши избор и да се появи клавиатура.

Има ли начин да направите второ UITextField незабавно достъпно, когато е избрано първо UITextField?


person Stefan Kendall    schedule 25.02.2014    source източник
comment
Моля, покажете кода, който използвате, за да отхвърлите клавиатурата.   -  person Wayne Hartman    schedule 25.02.2014
comment
Можете да имате следващ бутон като бутон за връщане и в делегата, когато бъде докоснат, направете втория UITextField първи отговарящ.   -  person zaheer    schedule 25.02.2014
comment
Стефан - това не е нормално поведение (трябва да можете да проверите това, като създадете основно приложение за един изглед с 2 текстови полета). Нещо във вашия код причинява това поведение.   -  person Aaron Brager    schedule 25.02.2014
comment
Нямам код за отхвърляне на клавиатурата. Използвам TPKeyboardAvoidingTableview (cocoapod), което е единственото нещо, което мисля, че може да повлияе на това. Ще се опитам да създам минимален провал тук и да проследя това.   -  person Stefan Kendall    schedule 25.02.2014


Отговори (4)


Ако презаредите табличния изглед в textFieldDidEndEditing, ще нарушите селекцията по този начин. недей така

person Stefan Kendall    schedule 26.02.2014

опитайте, натиснете друг изглед трябва да извика по-долу fn.

-(void)disappearKey{
[self.view endEditing:YES];
}

след като клавиатурата изчезне, докоснете произволно текстово поле, ще се появи клавиатура.

person Nag Raja    schedule 26.02.2014

Първо, мисля, че е грешка, че клавиатурата не се отхвърля и не се отваря отново при докосване на друго UITextField или UITextView. Трябва да се докладва и Apple трябва да го поправи.

С помощта на методите за делегиране на текстово поле и регистриране за известяване от клавиатурата трябва да е възможно ръчно да се следи дали потребителят докосне друго текстово поле и клавиатурата не се затвори и отвори отново. Най-малкото трябва да можете да откриете кога това се случва и да затворите клавиатурата ръчно чрез [textField resignFirstResponder];

Известията на клавиатурата са както следва:

UIKeyboardWillShowNotification
UIKeyboardDidShowNotification
UIKeyboardWillHideNotification
UIKeyboardDidHideNotification

Почти съм сигурен, че знаете методите за делегиране на UITextfield и textview

 – textFieldShouldBeginEditing: 
 – textFieldDidBeginEditing:
 – textFieldShouldEndEditing:
 – textFieldDidEndEditing:

В момента не съм в активен проект, така че не съм сигурен дали просто пренебрегнах проблема, но не мога да си спомня това да ми се е случвало.

person Paulo    schedule 25.02.2014
comment
Ще го пробвам тази вечер. Съвсем сигурен съм, че DidEndEditing не се задейства, когато се докосне второто текстово поле, но клавиатурата остава включена, която има бутона за моя аксесоар готов. - person Stefan Kendall; 25.02.2014

  • можете да използвате BSKeyboardControls. просто вижте демонстрацията и решете да използвате или не.

  • или можете да зададете етикет последователно към всяко текстово поле
    в uiview. след това използвайте кода по-долу.

    -(BOOL)textFieldShouldReturn:(UITextField*)textField
    
    {
         NSInteger nextTag = textField.tag + 1;
    
         UIResponder* nextResponder = [textField.superview viewWithTag:nextTag];
    
         if (nextResponder) {
    
        [nextResponder becomeFirstResponder];
    
        } else {
    
        [textField resignFirstResponder];
     }
    return NO; 
    }
    
person utkal patel    schedule 25.02.2014
comment
Това не е непременно следващото текстово поле. Имам 8 на екрана и всяка една е валидна цел, която трябва да може да се докосва. - person Stefan Kendall; 25.02.2014