UITextView wird nicht zum Ersthelfer
-
12-12-2019 - |
Frage
Ich habe ein UIView
das enthält a UITextView
.Der UIView
wird innerhalb von a initiiert UIViewController
.
Aber wenn ich das berühre UITextView
Box, nichts passiert.Weder die Tastatur wird angezeigt, noch reagieren Delegatenmethoden auf Interaktion.
Code:
noteText = [[UITextView alloc]initWithFrame:CGRectMake(0, 0, 700, 240)];
noteText.layer.borderColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:0.2].CGColor;
noteText.layer.borderWidth = 2;
[noteText setEditable:YES];
noteText.userInteractionEnabled = YES;
noteText.returnKeyType = UIReturnKeyDone;
noteText.font = [UIFont fontWithName:@"Calibri" size:16];
noteText.textColor = [UIColor blackColor];
[self addSubview:noteText];
Update 1
Ich habe alle anderen Ansichten aus dem UIViewController entfernt und nur eine UITextView in den UIViewController eingefügt und immer noch nicht reagiert.Weder Cursor noch Tastatur werden angezeigt.
Lösung 2
Ich habe den Fehler gefunden.
In einer Klasse kategorisiere ich die UITextView anstelle der Unterklasse und setze canBecomeFirstResponder auf NO.
Andere Tipps
noteText = [[UITextView alloc]initWithFrame:CGRectMake(0, 0, 700, 240)];
noteText.layer.borderColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:0.2].CGColor;
noteText.layer.borderWidth = 2;
[noteText setEditable:YES];
noteText.userInteractionEnabled = YES;
noteText.returnKeyType = UIReturnKeyDone;
noteText.font = [UIFont fontWithName:@"Calibri" size:16];
noteText.textColor = [UIColor blackColor];
[self addSubview:noteText];
// Zwei Vorschläge
self.userInteractionEnabled = YES; // superview may blocks touches
self.clipsToBounds = YES; // superview may clips your textfield, you will see it
Versuche dies:Passen Sie in Ihrer .h-Datei den Delegaten UITextViewDelegate an
:<UITextViewDelegate>
in Ihrer .m-Datei:
noteText.delegate = self;
Und delegierte Methoden:
- (BOOL)textViewShouldBeginEditing:(UITextView *)textView{
[textView becomeFirstResponder];
return YES;
}
- (BOOL)textViewShouldEndEditing:(UITextView *)textView{
//resign for exapmple
return YES;
}
Ich hoffe das hilft!
Ich weiß, es ist spät, aber vielleicht hilft es jemandem.Ich hatte das gleiche Problem und es verschwand, nachdem ich es verwendet hatte
[self setSelectable:true];
in meiner UITextView-Unterklasse.
Überprüfen Sie diese Dinge:
Fügen Sie rechts Ihren Viewcontroller hinzu
UIWindow
.Fenster einstellen
makeKeyAndVisible
und hinzufügenrootViewController
um bei dieser Methode zu fenstern:-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
Ich denke, hier stimmt etwas in der xib-Datei oder bei
appdelegate
.
Versuchen Sie es mit Überschreiben - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
in der UIView, um zu sehen, ob sie Berührungen empfängt
Versuchen Sie es für alle Fälle mit der Einstellung userInteractionEnabled = YES;
für Ihr UIView-Objekt.Wenn es irgendwie auf NEIN gesetzt ist, wird es auf alle Unteransichten übertragen
Möglicherweise ist bei der Überschreibung ein Fehler aufgetreten -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
Methode?Vielleicht tust du das resignFirstResponder
dort oder vor allem etwas Aussicht?
Wenn so etwas passiert, überprüfen Sie die folgenden Punkte:
- Stellen Sie sicher, dass die Textansicht ordnungsgemäß beibehalten und erst in freigegeben wird
dealloc
.(Wenn Sie nicht verwendenARC
) - Überprüfen Sie den Rahmen sowohl der Textansicht als auch der übergeordneten Ansichten.Stellen Sie sicher, dass die
subview
passt genau in die übergeordnete Ansicht.Stellen Sie außerdem sicher, dass dies bei allen der Fall istsuperviews
der Textansicht. - Prüfen Sie, ob die
delegate
richtig eingestellt ist.
Wenn dies alles erledigt ist, versuchen Sie, oben in der Textansicht eine Schaltfläche hinzuzufügen, und prüfen Sie, ob dies der Fall ist target selector
wird angerufen.Wenn ja, liegt das Problem beim Delegierten der Textansicht oder der Release-Anweisung.Andernfalls liegt das Problem an der Rahmeneinstellung der Textansicht oder deren Übersichten.