2010-03-13 2 views
0

Я вижу, что здесь есть похожие проблемы, но ни одно из решений не работает для меня. Вот так:iPhone UIButton addTarget: action: forControlEvents: не работает

У меня есть экземпляр UIButton внутри фрейма UIView, который расположен в пределах другого кадра UIView, который позиционируется в главном окне UIView. К оглавлению:

UIWindow 
--> UIView (searchView) 
    --> UISearchBar (findField) 
    --> UIView (prevButtonView) 
    --> UIButton (prevButton) 
    --> UIView (nextButtonView) 
    --> UIButton (nextButton) 

До сих пор так хорошо: все выложено, как я хочу. Тем не менее, кнопки не принимают пользовательский ввод любого типа. Я использую метод addTarget UIButton: Действие: forControlEvents: и дать вам представление о том, что я делаю, вот мой код nextButton:

nextButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
[nextButton setImage:[UIImage imageNamed:@"find_next_on.png"] forState:UIControlStateNormal]; 
[nextButton setImage:[UIImage imageNamed:@"find_next_off.png"] forState:UIControlStateDisabled]; 
[nextButton setImage:[UIImage imageNamed:@"find_next_off.png"] forState:UIControlStateHighlighted]; 
[nextButton addTarget:self action:@selector(nextResult:) forControlEvents:UIControlEventTouchUpInside]; 

Метод NextResult: никогда не вызывается, состояние из кнопка не меняется при прикосновении, и нет ничего чертвого, что я мог сделать, чтобы заставить ее работать. Я предполагаю, что есть проблема со всеми этими уровнями просмотров: возможно, что-то сидит поверх моей кнопки, но я не уверен, что это может быть.

В интересах информационной перегрузки я нашел немного кода, который бы распечатывал всю мою информацию о просмотре. Это то, что я получаю за всю свою иерархию представления:

UIWindow 
{{0, 0}, {320, 480}} 
UILayoutContainerView 
{{0, 0}, {320, 480}} 
    UINavigationTransitionView 
    {{0, 0}, {320, 480}} 
     UIViewControllerWrapperView 
     {{0, 64}, {320, 416}} 
      UIView 
      {{0, 0}, {320, 416}} 
       UIWebView 
       {{0, 44}, {320, 416}} 
        UIScroller 
        {{0, 0}, {320, 416}} 
         UIImageView 
         {{0, 0}, {54, 54}} 
         UIImageView 
         {{0, 0}, {54, 54}} 
         UIImageView 
         {{0, 0}, {54, 54}} 
         UIImageView 
         {{0, 0}, {54, 54}} 
         UIImageView 
         {{-14.5, 14.5}, {30, 1}} 
         UIImageView 
         {{-14.5, 14.5}, {30, 1}} 
         UIImageView 
         {{0, 0}, {1, 30}} 
         UIImageView 
         {{0, 0}, {1, 30}} 
         UIImageView 
         {{0, 430}, {320, 30}} 
         UIImageView 
         {{0, 0}, {320, 30}} 
         UIWebDocumentView 
         {{0, 0}, {320, 21291}} 
       UIView 
       {{0, 0}, {320, 44}} 
        UISearchBar 
        {{10, 8}, {240, 30}} 
         UISearchBarBackground 
         {{0, 0}, {240, 30}} 
         UISearchBarTextField 
         {{5, -2}, {230, 31}} 
          UITextFieldBorderView 
          {{0, 0}, {230, 31}} 
          UIPushButton 
          {{205, 6}, {19, 19}} 
          UIImageView 
          {{10, 8}, {15, 15}} 
          UILabel 
          {{30, 7}, {163, 18}} 
        UIView 
        {{290, 15}, {23, 23}} 
         UIButton 
         {{0, 0}, {0, 0}} 
          UIImageView 
          {{-12, -12}, {23, 23}} 
        UIView 
        {{260, 15}, {23, 23}} 
         UIButton 
         {{0, 0}, {0, 0}} 
          UIImageView 
          {{-12, -12}, {23, 23}} 
    UINavigationBar 
    {{0, 20}, {320, 44}} 
     UINavigationButton 
     {{267, 7}, {48, 30}} 
      UIImageView 
      {{0, 0}, {48, 30}} 
      UIButtonLabel 
      {{11, 7}, {26, 15}} 
     UINavigationItemView 
     {{79, 8}, {180, 27}} 
     UINavigationItemButtonView 
     {{5, 7}, {66, 30}} 
MBProgressHUD 
{{0, 0}, {320, 480}} 
    UIActivityIndicatorView 
    {{141, 206}, {37, 37}} 
    UILabel 
    {{117, 247}, {86, 27}} 

Соответствующая часть отмечено выше в разделе UINavigationBar.

У кого-нибудь есть предложения? Я в полном порядке.

Спасибо за чтение.

Aaron.

ответ

2

Я понял, так вот сделка для потомков.

Первоначально я позиционировал свои кнопки, вложив их в UIViews и установив их свойства рамки. Я смог упростить это, воспользовавшись свойством UIButton для UIView, чтобы сделать то же самое. Поэтому я забрал вложенности вид и объявил позицию UIButton как так:

nextButton.frame = CGRectMake(searchView.frame.size.width - 30, 15, 23, 23); 

Но это не решить мою проблему; он просто сделал мой код более компактным. Оказывается, это вычисление свойства X моего кадра, которое вызывало проблему. Когда я реорганизовал так:

NSInteger nextX = searchView.frame.size.width - 30; 
nextButton.frame = CGRectMake(nextX, 15, 23, 23); 

Все снова начало работать. Идите фигуру.

Cheers! Аарон.

Смежные вопросы