iphone ios - Disabilitato UIButton non sbiadito o grigio




uicontrol view (13)

Nella mia app per iPhone, ho un UIButton che ho creato in Interface Builder. Posso abilitarlo e disabilitarlo con successo in questo modo nel mio codice ...

sendButton.enabled = YES;

o

sendButton.enabled = NO;

Tuttavia, l'aspetto visivo del pulsante è sempre lo stesso! Non è sbiadito o grigio. Se tento di cliccarlo, è abilitato o disabilitato come previsto. Mi sto perdendo qualcosa? Non dovrebbe sembrare sbiadito o grigio?

Grazie


Answers

basta cambiare la configurazione di stato per disabilitare e scegliere quello che vuoi, immagine di sfondo per stato disabilitato


Puoi usare il seguente codice:

sendButton.enabled = YES;
sendButton.alpha = 1.0;

or

sendButton.enabled = NO;
sendButton.alpha = 0.5;

In Swift :

previousCustomButton.enabled = false
previousCustomButton.alpha = 0.5

o

nextCustomButton.enabled = true
nextCustomButton.alpha = 1.0

Puoi usare entrambe le prime risposte e sarà un risultato migliore.

Nell'ispettore attributi (quando selezioni il pulsante), modifica Configura stato su Disabilitato per impostare la nuova immagine che verrà visualizzata quando è disabilitata (rimuovi l'indicatore nel controllo Contenuto-> Abilitato per renderlo disabilitato) .

E quando cambi lo stato in abilitato, l'immagine caricherà quella da questo stato.

Aggiungere la logica alpha a questo è un buon dettaglio.

Saluti!


Prova a impostare le diverse immagini per UIControlStateDisabled (immagine grigia disabilitata) e UIControlStateNormal (Immagine normale) in modo che il pulsante generi lo stato disabilitato per te.


Crea un'estensione in Swift> 3.0 piuttosto che ogni pulsante da solo

extension UIButton {
override open var isEnabled : Bool {
    willSet{
        if newValue == false {
            self.setTitleColor(UIColor.gray, for: UIControlState.disabled)
        }
     }
   }

Questa è una domanda piuttosto vecchia, ma c'è un modo molto semplice per raggiungere questo obiettivo.

myButton.userInteractionEnabled = false

Questo disabiliterà tutti i gesti tattili senza modificare l'aspetto del pulsante


È possibile utilizzare adjustsImageWhenDisabled che è la proprietà di UIButton
(@property (nonatomic) BOOL adjustsImageWhenDisabled)

Ex:

 Button.adjustsImageWhenDisabled = false

Se si utilizza un pulsante di testo, è possibile inserire viewDidLoad come metodo di istanza

- (void)setTitleColor:(UIColor *)color forState:(UIControlState)state

esempio:

[self.syncImagesButton setTitleColor:[UIColor grayColor] forState:UIControlStateDisabled];

Per rendere il pulsante sbiadito quando disabilitato, puoi impostare alpha per questo. Ci sono due opzioni per te:

Primo modo : se vuoi applicare tutti i tuoi pulsanti nella tua app, puoi scrivere extention per UIButton in questo modo:

extension UIButton {

    open override var isEnabled: Bool{
        didSet {
            alpha = isEnabled ? 1.0 : 0.5
        }
    }

}

Secondo modo : se desideri semplicemente applicare alcuni pulsanti nella tua app, puoi scrivere una classe personalizzata da UIButton come di seguito e utilizzare questa classe per la quale desideri applicare:

class MyButton: UIButton {
    override var isEnabled: Bool {
        didSet {
            alpha = isEnabled ? 1.0 : 0.5
        }
    }
}

#import "UIButton+My.h"
#import <QuartzCore/QuartzCore.h>
@implementation UIButton (My)


-(void)fade :(BOOL)enable{
    self.enabled=enable;//
    self.alpha=enable?1.0:0.5;
}

@end

.h:

#import <UIKit/UIKit.h>
@interface UIButton (My)

-(void)fade :(BOOL)enable;

@end

Sono bloccato sullo stesso problema. Impostare alpha non è quello che voglio.

UIButton ha " immagine di sfondo " e " colore di sfondo ". Per immagine, UIButton ha una proprietà come

@property (nonatomic) BOOL adjustsImageWhenDisabled

E l'immagine di sfondo viene disegnata più chiara quando il pulsante è disabilitato. Per il colore di sfondo, l'impostazione di alfa, la soluzione di Ravin, funziona bene.

Innanzitutto, devi controllare se hai deselezionato la casella "Disabilita regola immagine" sotto Utilità-Attributi.
Quindi, controlla il colore di sfondo per questo pulsante.

(Spero sia utile. Questo è un vecchio post: le cose potrebbero essere cambiate in Xcode).


Per iOS 6 segui twitter

ACAccountStore *accountStore = [[ACAccountStore alloc] init];

ACAccountType *accountType = [accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierTwitter];

[accountStore requestAccessToAccountsWithType:accountType options:nil completion:^(BOOL granted, NSError *error) {
    if(granted) {
        // Get the list of Twitter accounts.
        NSArray *accountsArray = [accountStore accountsWithAccountType:accountType];

        // For the sake of brevity, we'll assume there is only one Twitter account present.
        // You would ideally ask the user which account they want to tweet from, if there is more than one Twitter account present.
        if ([accountsArray count] > 0) {
            // Grab the initial Twitter account to tweet from.
            ACAccount *twitterAccount = [accountsArray objectAtIndex:0];

            NSMutableDictionary *tempDict = [[NSMutableDictionary alloc] init];
            [tempDict setValue:@"MohammadMasudRa" forKey:@"screen_name"];
            [tempDict setValue:@"true" forKey:@"follow"];
            NSLog(@"*******tempDict %@*******",tempDict);

            //requestForServiceType

            SLRequest *postRequest = [SLRequest requestForServiceType:SLServiceTypeTwitter requestMethod:SLRequestMethodPOST URL:[NSURL URLWithString:@"https://api.twitter.com/1/friendships/create.json"] parameters:tempDict];
            [postRequest setAccount:twitterAccount];
            [postRequest performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) {
                NSString *output = [NSString stringWithFormat:@"HTTP response status: %i Error %d", [urlResponse statusCode],error.code];
                NSLog(@"%@error %@", output,error.description);
            }];
        }

    }
}];




iphone cocoa-touch uibutton