1

ボタンを取得しました。これをクリックすると、userInteractionが設定されます。self.view.userInteractionEnabled = NO;これは機能します。ボタンをクリックすると、ボタンをクリックできなくなります。それから私はreceiveNotification別のクラスで呼び出すものを手に入れました。

- (void) receiveNotification:(NSNotification *) notification
{    
   if ([[notification name] isEqualToString:@"EnableUI"]){
       self.view.userInteractionEnabled = YES;
       NSLog(@"Successfully received the %@ notification!",[notification name]);
   }
}

プログラムの出力は、通知が印刷されるため、通知を受信したことを示してSuccessfully received the EnableUI notification!いますが、それでもUIボタンをクリックできません...

4

3 に答える 3

0

この場合は必要ないと思われるビューでuserInteractionを設定する代わりに、ボタン自体でインタラクションを設定してみませんか?

.H

@property (strong, nonatomic) IBOutlet UIButton *buttonA;
@property (strong, nonatomic) IBOutlet UIButton *buttonB;
@property (strong, nonatomic) IBOutlet UIButton *buttonC;

.M

@synthesize buttonA, buttonB, buttonC;

- (void) receiveNotification:(NSNotification *) notification
{  
   NSArray *buttonArray = [[NSArray alloc] initWithObjects:buttonA,buttonB,buttonC,nil];  
   if ([[notification name] isEqualToString:@"EnableUI"]){
      for(UIButton* button in buttonArray) {
         UIButton *tempElement = [buttonArray objectAtIndex:i];
         tempElement.userInteractionEnabled = YES;
      }
      NSLog(@"Successfully received the %@ notification!",[notification name]);
   }
}
于 2013-03-25T09:34:04.267 に答える
0

UIOperationsはメインスレッドで実行する必要があります。

あなたはメインスレッドにいないのではないかと思います。通知方法で確認してください

NSLog(@"%i", [NSThread isMainThread]);

そうでない場合は、メインスレッドでpostNotificationメソッドを呼び出すかどうかを確認してください。

それが問題である場合は、リンクをたどってください

NSNotificationsに応答する場合、UIViewを更新するためのベストプラクティスは何ですか

于 2013-03-25T09:36:49.200 に答える
0

UIButton.tagを使用して、無効にする必要のあるボタンをマークします。

#define BUTTON_TAG_UNAUTH 123

- (void)disableButtonWithReason:(NSUInteger)reason
{
    NSArray *views = [self.view subviews];
    for (UIView *button in views) {
        //first checking tag cause more efficiently
        if (button.tag == reason && [button isKindOfClass:[UIButton class]]) {
            ((UIButton*)button).enabled = false;
        }
    }
}

- (void)disableButtonsDueToUnauthorized
{
    [self disableButtonWithReason:BUTTON_TAG_UNAUTH];
}
于 2014-03-11T13:28:36.287 に答える