2009-02-15 19 views

Antwort

27

Ich denke, Ihre beste Wette ist es, das Anpassen der UIAlert-Ansicht zu vergessen und selbst eine benutzerdefinierte Ansicht zu erstellen.

Zum einen ist das, was Sie zeigen, wirklich kein "Alarm", also widerspricht es dem, für was UIAlertView gedacht ist. Das bedeutet, dass Sie das UI-Paradigma für den Benutzer ändern, was nie eine gute Idee ist.

Zweitens wäre es viel einfacher, eine benutzerdefinierte Ansicht an Ort und Stelle zu animieren als zu versuchen, UIAlertView zu hacken, um es zu tun, was Sie wollen.

+3

Nicht nur das, aber der Versuch, UIAlertView anzupassen, ist eines der Dinge, die Ihre App von Apple ziemlich konsequent ablehnen können. –

4

Es gibt keine eingebauten Komponenten dafür. UIAlertView sollte nur Text und Schaltflächen wie im HIG-Dokument haben.

Sie müssen Ihre eigene Ansicht erstellen und Steuerelemente hinzufügen. Das Beispiel HeadsUpUI im SDK zeigt, wie eine benutzerdefinierte menüartige Ansicht als Overlay angezeigt wird.

Hoffe, dass hilft.

11

Zuerst müssen Sie die Alarmbox vergrößern, um Ihre Steuerelemente unterzubringen, aber sie muss in der Mitte platziert werden.

Dafür geben Sie anstelle der Rahmengröße den Nachrichtentext mit "\ n" s als Necc ein. Beispiel:

Verwenden Sie dann ein UIAlertViewDelegate für die Alertview.

überschreiben Sie es, viewWillAppear: fügen Sie Ihre Tasten und stellen Sie ihre Bilder manuell an der gewünschten Position.

OR: eine Gesamtansicht mit einem View-Controller erstellen und den Blick auf die Alert-Box hinzufügen:

[myalertview addSubvew:mycomplexalert]; 

Hoffnung diese in Ihre Hilfe kommen :)

Ich bin mit Alarm Boxen für die Bewertung Eingang mit Sternbildern, twitter, fb Feedback usw.

UPDATE iOS7:

für iOS 7, Ihre eigene Ansicht erstellen mit com ponenten und sie als Zubehör Ansicht des Alertview gesetzt:

[alert setValue:imageView forKey:@"accessoryView"]; 

Sein das ist einfach :-)

+1

Der "\ n \ n \ n \ n" -Hack scheint nicht mit der aktuellen Version von iOS 7 Beta 1 zu funktionieren! Ich bin mir nicht sicher, ob dies in der endgültigen iOS 7 geändert wird .. – Raphael

+0

Für iOS 7, erstellen Sie Ihre eigene Ansicht und legen Sie es als die Ansicht der Alertview: [alert setValue: imageView forKey: @ "AccessoryView"]; –

+0

Ich denke, es könnte einen Grund geben, warum "accesoryView" nicht öffentlich zugänglich ist. Dies könnte in zukünftigen Versionen brechen oder von Apple abgelehnt werden. – Raphael

6

This tutorial beschreibt, wie UIAlertView Unterklasse ein Texteingabefeld zu erreichen. Es wird erläutert, wie Sie die Ansicht vergrößern, Unteransichten hinzufügen (z. B. Textfelder oder Bilder) und eine Transformation durchführen, um die Box auf dem Bildschirm nach oben zu verschieben.

+0

Das geht NICHT darüber hinaus, wie man die Größe der Ansicht ändert, aber es ist hilfreich, zu zeigen, wie man die Textbox hinzufügt und die eingegebenen Sachen benutzt hinein. – sasquatch

6

Ich schrieb eine fast Pixel perfekte UIAlertView Ersatz, das ist auch voll konfigurierbar.Schauen Sie sich CODialog an, wenn es Ihren Bedürfnissen entspricht.

+0

das ist großartig @Erik Aigner .. aber ich habe gerade ein altes (iOS6) Projekt, das Ihre Bibliothek verwendet und wir müssen es auf iOS7 migrieren .. Ihre Bibliothek verwendet das Aussehen/Gefühl von iOS6 .. irgendeine Idee, wie ich es aktualisieren kann wie iOS 7 aussehen/fühlen? – abbood

+0

@abbood überschreiben Sie einfach die Zeichenmethoden –

+0

@ugh Mann, das ist eine Menge von Codezeilen .. wissen Sie, ob Apple eine App akzeptieren würde, die Ihre Bibliothek hat, da sie nur Code akzeptieren, der gegen iOS 7 kompiliert wurde? – abbood