我有一个按钮,当我点击它时设置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按钮...
答案 0 :(得分: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]);
}
}
答案 1 :(得分:0)
UIOperations必须在主线程中完成。
我怀疑你不在主线上。请通知方法
NSLog(@"%i", [NSThread isMainThread]);
如果没有 请检查您是否在主线程上调用postNotification方法。
如果是问题,请点击链接
When responding to NSNotifications, what is the best practice for updating UIViews
答案 2 :(得分: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];
}