Альтернатива для didSelectRowAtIndexPath, когда UITableViewCells являются UIResponders?

Ячейки в моем табличном представлении представляют собой горизонтальные UIScrollViews, которые, как я полагаю, являются причиной того, что didSelectRowAtIndexPath не вызывается. У меня есть вызов resignFirstResponder в этом методе.

У кого-нибудь есть простой способ исправить это? Есть ли альтернатива didSelectRowAtIndexPath? Или есть способ запустить этот метод?

Спасибо!


person Mike A    schedule 17.05.2010    source источник


Ответы (2)


Вероятно, вы все еще используете cellForRowAtIndexPath и, возможно, у вас есть UIScrollView в качестве подпредставления содержимого ячейки. Можете ли вы просто вызвать метод вверх по цепочке супервизора, то есть [self.superview method], [self.superview.superview method]? Это должно, по крайней мере, вернуть вас к объекту UITableView, и при необходимости вы можете идентифицировать свои UIScrollViews по тегу.

person Adam Eberbach    schedule 17.05.2010
comment
На самом деле все еще проще. Но вы подали мне идею. Я просто переопределяю touchesBegan в UIView внутри одной из моих страниц UIScrollView, а затем поднимаюсь по цепочке, как вы предложили. Спасибо за открытие! Ваше здоровье. - person Mike A; 18.05.2010
comment
На самом деле все было не так просто. Я придумал довольно элегантное решение, еще раз спасибо. - person Mike A; 19.05.2010

Итак, чтобы решить эту мою небольшую проблему, я придумал быстрый метод, который вы можете реализовать в своем AppDelegate.

- (void)setFirstResponder:(UISearchBar *)setResponder{  
    responder = setResponder;   
}

- (void)unsetFirstResponder{        
    if(responder){
        [responder resignFirstResponder];
        responder = nil;
    }   
}

Затем всякий раз, когда вы звоните первому ответчику

[(yourAppDelegate *)[[UIApplication sharedApplication] delegate] setFirstResponder:yourResponderObject];    

И всякий раз, когда вы уходите в отставку, первый ответчик

[(yourAppDelegate *)[[UIApplication sharedApplication] delegate] unsetFirstResponder];  

Надеюсь, это поможет кому-то! :)

person Mike A    schedule 19.05.2010