Aracılığıyla paylaş


Xamarin.Mac'teki uyarılar

Bu makale, Xamarin.Mac uygulamasında uyarılarla çalışmayı kapsar. C# kodundan uyarı oluşturmayı ve görüntülemeyi ve kullanıcı etkileşimlerini yanıtlamayı açıklar.

Xamarin.Mac uygulamasında C# ve .NET ile çalışırken, ve Xcode'da Objective-C çalışan bir geliştiricinin eriştiği Uyarılar'a erişebilirsiniz.

Uyarı, ciddi bir sorun oluştuğunda (hata gibi) veya uyarı olarak (bir dosyayı silmeye hazırlanma gibi) görüntülenen özel bir iletişim kutusu türüdür. Bir uyarı bir iletişim kutusu olduğundan, kapatılmadan önce bir kullanıcı yanıtı da gerektirir.

Örnek bir uyarı

Bu makalede, Xamarin.Mac uygulamasında Uyarılar ile çalışmanın temellerini ele alacağız.

Uyarılara Giriş

Uyarı, ciddi bir sorun oluştuğunda (hata gibi) veya uyarı olarak (bir dosyayı silmeye hazırlanma gibi) görüntülenen özel bir iletişim kutusu türüdür. Uyarılar, kullanıcının görevine devam etmeden önce kapatılması gerektiğinden kullanıcıyı kesintiye uğratacağından, kesinlikle gerekli olmadıkça uyarı görüntülemekten kaçının.

Apple aşağıdaki yönergeleri önerir:

  • Uyarıyı yalnızca kullanıcılara bilgi vermek için kullanmayın.
  • Yaygın, geri alınabilen eylemler için uyarı görüntülemeyin. Bu durum veri kaybına neden olsa bile.
  • Bir durum uyarıya değerse, bunu görüntülemek için başka bir kullanıcı arabirimi öğesi veya yöntemi kullanmaktan kaçının.
  • Dikkat simgesi dikkatli kullanılmalıdır.
  • Uyarı iletisinin uyarı durumunu net ve kısa bir şekilde açıklayın.
  • Varsayılan Düğme adı, uyarı iletinizde tanımladığınız eyleme karşılık gelir.

Daha fazla bilgi için Apple'ın OS X İnsan Arabirimi Yönergeleri'nin Uyarılar bölümüne bakın

Uyarının Anatomisi

Yukarıda belirtildiği gibi, önemli bir sorun oluştuğunda veya olası veri kaybına (kaydedilmemiş bir dosyayı kapatma gibi) uyarı olarak uygulamanızın kullanıcısına uyarılar gösterilmelidir. Xamarin.Mac'te, C# kodunda bir uyarı oluşturulur, örneğin:

var alert = new NSAlert () {
  AlertStyle = NSAlertStyle.Critical,
  InformativeText = "We need to save the document here...",
  MessageText = "Save Document",
};
alert.RunModal ();

Yukarıdaki kodda, uygulamalar simgesi uyarı simgesi, başlık, uyarı iletisi ve tek bir Tamam düğmesinin üzerine eklenmiş bir uyarı görüntülenir:

Tamam düğmesi olan bir uyarı

Apple, bir uyarıyı özelleştirmek için kullanılabilecek çeşitli özellikler sağlar:

  • AlertStyle , uyarı türünü aşağıdakilerden biri olarak tanımlar:
    • Uyarı - Kullanıcıyı kritik olmayan geçerli veya yaklaşan bir olayı uyarmak için kullanılır. Bu varsayılan stildir.
    • Bilgilendirici - Kullanıcıyı geçerli veya yaklaşan bir olay hakkında uyarmak için kullanılır. Şu anda Uyarı ile Bilgilendiren arasında görünür bir fark yoktur
    • Kritik - Kullanıcıyı yaklaşan bir olayın (dosya silme gibi) ciddi sonuçları hakkında uyarmak için kullanılır. Bu tür bir uyarı dikkatli kullanılmalıdır.
  • MessageText - Bu uyarının ana iletisi veya başlığıdır ve durumu kullanıcıya hızla tanımlamalıdır.
  • InformativeText - Bu, durumu net bir şekilde tanımlamanız ve kullanıcıya uygulanabilir seçenekler sunmanız gereken uyarının gövdesidir.
  • Simge - Kullanıcıya özel bir simge görüntülenmesine izin verir.
  • HelpAnchor & ShowsHelp - Uyarının uygulama Yardım Defteri'ne bağlanmasına ve uyarı için yardım görüntülemesine izin verir.
  • Düğmeler - Varsayılan olarak, bir uyarıda yalnızca Tamam düğmesi vardır, ancak Düğmeler koleksiyonu gerektiğinde daha fazla seçenek eklemenize olanak tanır.
  • ShowsSuppressionButton - Kullanıcının uyarıyı tetikleyen olayın sonraki oluşumları için uyarıyı engellemek için kullanabileceği bir onay kutusu görüntülüyorsa true .
  • AccessoryView - Veri girişi için Metin Alanı ekleme gibi ek bilgiler sağlamak üzere uyarıya başka bir alt görünüm eklemenize olanak tanır. Yeni bir AccessoryView ayarlarsanız veya mevcut bir aksesuarı değiştirirseniz, uyarının Layout() görünür düzenini ayarlamak için yöntemini çağırmanız gerekir.

Uyarı Görüntüleme

Bir uyarının Serbest Kayan veya Sayfa olarak görüntülenmesinin iki farklı yolu vardır. Aşağıdaki kod bir uyarıyı serbest kayan olarak görüntüler:

var alert = new NSAlert () {
  AlertStyle = NSAlertStyle.Informational,
  InformativeText = "This is the body of the alert where you describe the situation and any actions to correct it.",
  MessageText = "Alert Title",
};
alert.RunModal ();

Bu kod çalıştırılırsa, aşağıdakiler görüntülenir:

Basit bir uyarı

Aşağıdaki kod, Sayfa ile aynı uyarıyı görüntüler:

var alert = new NSAlert () {
  AlertStyle = NSAlertStyle.Informational,
  InformativeText = "This is the body of the alert where you describe the situation and any actions to correct it.",
  MessageText = "Alert Title",
};
alert.BeginSheet (this);

Bu kod çalıştırılırsa aşağıdakiler görüntülenir:

Sayfa olarak görüntülenen uyarı

Uyarı Düğmeleriyle Çalışma

Varsayılan olarak, Uyarı yalnızca Tamam düğmesini görüntüler. Bununla sınırlı değildir, düğmeler koleksiyonuna ekleyerek ek düğmeler oluşturabilirsiniz. Aşağıdaki kod Tamam, İptal ve Belki düğmesiyle serbest kayan bir uyarı oluşturur:

var alert = new NSAlert () {
  AlertStyle = NSAlertStyle.Informational,
  InformativeText = "This is the body of the alert where you describe the situation and any actions to correct it.",
  MessageText = "Alert Title",
};
alert.AddButton ("Ok");
alert.AddButton ("Cancel");
alert.AddButton ("Maybe");
var result = alert.RunModal ();

Eklenen ilk düğme, kullanıcı Enter tuşuna bastığında etkinleştirilecek Varsayılan Düğme olacaktır. Döndürülen değer, kullanıcının hangi düğmeye basacağını gösteren bir tamsayı olacaktır. Bizim örneğimizde aşağıdaki değerler döndürülür:

  • Tamam - 1000.
  • İptal - 1001.
  • Belki - 1002.

kodunu çalıştırırsak, aşağıdakiler görüntülenir:

Üç düğme seçeneğine sahip bir uyarı

Sayfa ile aynı uyarının kodu aşağıdadır:

var alert = new NSAlert () {
  AlertStyle = NSAlertStyle.Informational,
  InformativeText = "This is the body of the alert where you describe the situation and any actions to correct it.",
  MessageText = "Alert Title",
};
alert.AddButton ("Ok");
alert.AddButton ("Cancel");
alert.AddButton ("Maybe");
alert.BeginSheetForResponse (this, (result) => {
  Console.WriteLine ("Alert Result: {0}", result);
});

Bu kod çalıştırılırsa aşağıdakiler görüntülenir:

Sayfa olarak görüntülenen üç düğme uyarısı

Önemli

Bir uyarıya hiçbir zaman üçten fazla düğme eklememelisiniz.

Gizleme Düğmesini Gösterme

Uyarının ShowSuppressButton özelliği ise true, uyarı, kullanıcının uyarıyı tetikleyen olayın sonraki oluşumları için uyarıyı engellemek için kullanabileceği bir onay kutusu görüntüler. Aşağıdaki kod, gizleme düğmesiyle serbest kayan bir uyarı görüntüler:

var alert = new NSAlert () {
  AlertStyle = NSAlertStyle.Informational,
  InformativeText = "This is the body of the alert where you describe the situation and any actions to correct it.",
  MessageText = "Alert Title",
};
alert.AddButton ("Ok");
alert.AddButton ("Cancel");
alert.AddButton ("Maybe");
alert.ShowsSuppressionButton = true;
var result = alert.RunModal ();
Console.WriteLine ("Alert Result: {0}, Suppress: {1}", result, alert.SuppressionButton.State == NSCellStateValue.On);

değerinin alert.SuppressionButton.State değeri ise NSCellStateValue.On, kullanıcı Gizle onay kutusunu işaretlemiştir, aksi takdirde işaretlememiştir.

Kod çalıştırılırsa, aşağıdakiler görüntülenir:

Gizleme düğmesi olan bir uyarı

Sayfa ile aynı uyarının kodu aşağıdadır:

var alert = new NSAlert () {
  AlertStyle = NSAlertStyle.Informational,
  InformativeText = "This is the body of the alert where you describe the situation and any actions to correct it.",
  MessageText = "Alert Title",
};
alert.AddButton ("Ok");
alert.AddButton ("Cancel");
alert.AddButton ("Maybe");
alert.ShowsSuppressionButton = true;
alert.BeginSheetForResponse (this, (result) => {
  Console.WriteLine ("Alert Result: {0}, Suppress: {1}", result, alert.SuppressionButton.State == NSCellStateValue.On);
});

Bu kod çalıştırılırsa aşağıdakiler görüntülenir:

Gizleme düğmesinin sayfa olarak görüntülendiği bir uyarı

Özel Alt Görünüm Ekleme

Uyarılar, uyarıyı daha fazla özelleştirmek ve kullanıcı girişi için Metin Alanı gibi şeyler eklemek için kullanılabilecek bir özelliğe sahiptirAccessoryView. Aşağıdaki kod, eklenen metin giriş alanıyla serbest kayan bir uyarı oluşturur:

var input = new NSTextField (new CGRect (0, 0, 300, 20));

var alert = new NSAlert () {
AlertStyle = NSAlertStyle.Informational,
InformativeText = "This is the body of the alert where you describe the situation and any actions to correct it.",
  MessageText = "Alert Title",
};
alert.AddButton ("Ok");
alert.AddButton ("Cancel");
alert.AddButton ("Maybe");
alert.ShowsSuppressionButton = true;
alert.AccessoryView = input;
alert.Layout ();
var result = alert.RunModal ();
Console.WriteLine ("Alert Result: {0}, Suppress: {1}", result, alert.SuppressionButton.State == NSCellStateValue.On);

Buradaki önemli satırlar var input = new NSTextField (new CGRect (0, 0, 300, 20)); , uyarıyı ekleyeceğiniz yeni bir Metin Alanı oluşturur. alert.AccessoryView = input; uyarıya Metin Alanı'nı ve uyarıyı yeni alt görünüme Layout() sığacak şekilde yeniden boyutlandırmak için gereken yöntemine çağrıyı ekler.

Kodu çalıştırırsak aşağıdakiler görüntülenir:

Kodu çalıştırırsak aşağıdakiler görüntülenir

Sayfayla aynı uyarı aşağıdadır:

var input = new NSTextField (new CGRect (0, 0, 300, 20));

var alert = new NSAlert () {
  AlertStyle = NSAlertStyle.Informational,
  InformativeText = "This is the body of the alert where you describe the situation and any actions to correct it.",
  MessageText = "Alert Title",
};
alert.AddButton ("Ok");
alert.AddButton ("Cancel");
alert.AddButton ("Maybe");
alert.ShowsSuppressionButton = true;
alert.AccessoryView = input;
alert.Layout ();
alert.BeginSheetForResponse (this, (result) => {
  Console.WriteLine ("Alert Result: {0}, Suppress: {1}", result, alert.SuppressionButton.State == NSCellStateValue.On);
});

Bu kodu çalıştırırsak aşağıdakiler görüntülenir:

Özel görünüme sahip bir uyarı

Özet

Bu makalede, Xamarin.Mac uygulamasında Uyarılar ile çalışma konusuna ayrıntılı bir bakış verilmiştir. Uyarıların farklı türlerini ve kullanımlarını, Uyarıları oluşturma ve özelleştirmeyi ve C# kodunda Uyarılar ile çalışmayı gördük.