... Ağustos, 2010

XCode’da Kod Tamamlama

Pazar, Ağustos 29th, 2010

XCode’un yapısı çok hoşuma gitmekle beraber diğer IDE’lere nazaran bir kusuru olduğunu düşünüyordum. Kod yazarken sizi zahmetten kurtarmak için en yakın ihtimali önceden sizin yazmak üzere olduğunuz ifadeye soluk bir renkle tamamlıyor. Siz “hah buydu” diyorsanız “tab” tuşuna basıp ifadeyi yazmış gibi oluyorsunuz, “yok bu değildi” diyorsanız yazmaya devam ediyorsunuz. Siz yazdıkça o en yakın ihtimali değiştirip önünüze koyuyor. Gayet iyi bir özellik ama diğer ide’lerde bu özellik daha gelişmiş oluyor. Genelde siz yazmaya başlar başlamaz, mesela değişkeninizi yazdıkdan sonra “.” işaretini koyar koymaz bir combo-box (aşağı açılır menü) çıkar ve siz orda tüm yazabileceğiniz ihtimalleri görürsünüz. Benim gibi acemi bir Objective-C geliştiricileri için XCode böyle bir özellik olması harika olurdu… Derken… Meğer varmış! Tesadüfen ifadeyi yazıp “.” koydukdan sonra ESC tuşuna basmasam görmeyecektim. Bir ömür böyle gidecektim. Ah Steve! İlla farklı olacaksın değil mi!

Yeni XCode ile Eski Sürüm iPhone’lar için Uygulama Yazmak

Pazar, Ağustos 29th, 2010

XCode’nizi güncellediğinizde Overview menüsünden eski sürüm iPhone’ların kalktığını görünce ümitsizliğe düşmeyin. XCode ekranında projenizin ana dosyasına çift tıklayarak Project Info penceresini açın. En üstteki Build sekmesine tıklayıp arama alanına “deploy” yazın. Gelen listede “IPhone OS Deployment Target” seçeneğini göreceksiniz. Burada istediğiniz iPhone sürümünü işaretleyebilirsiniz. Böylece eski iPhone cihazınıza uygulamayı gönderip testlerinizi yapmaya devam edebilirsiniz. Uygulamayı yayınladığınızda da eski sürüm iPhone’ler problem yaşamazlar.

Mac Os 10.6 Hızlı Kullanıcı Değiştirme

Perşembe, Ağustos 26th, 2010

Eşinizle bir mac’i paylaşıyorsanız (daha doğrusu paylaşamıyorsanız) ve onun bilgisayar başında olmadığı zaman hesabınızı açıp sonra tekrar kapatmak hoşunuza gitmiyorsa sizi bu zahmetten kurtaracak basit bir yöntem var. Kullanıcı oturumunuzu kapatmadan başka bir oturuma geçmek mümkün. Bunun için System Preferences’dan Accounts’u açın. Sol alttaki kilit ikonuna tıklayıp yönetici parolanızla kilidi açın. Login Options’a tıklayıp ‘Show fast user switching menu as’ alanına istediğiniz seçeneği işaretleyin. Buradaki seçiminize göre ekranın sağ üst köşesinde kullanıcıların adlarını (ya da kısa adlarını, ya da simgelerini) içeren bir menü beliriyor. Bu menüden istediğiniz kullanıcıyı seçip onun şifresini girdikden sonra afilli bir dönme efekti ile birlikte şıp diye o hesaba geçiyorsunuz. Üstelik mevcut hesap da kapanmamış oluyor.

SDK’mı güncelledim simülatörüm karardı

Çarşamba, Ağustos 25th, 2010

iPhone SDK’nızı güncelledikden sonra uygulamalarınız ilginç bir şekilde simülatörde simsiyah bir ekranda çalışmakta ısrar ediyorsa saçınızı başınızı yolmayın, uygulamayı bu yeni sdk için baştan yazmayın. MainWindow.xib dosyasına çift tıklayın Intarface Builder’inizi açın. Window objesine tıklayıp Window Attributes ekranındaki Visible at Launch ve Full Screen at Launch seçeneklerinin ikisinin de işaretleyin. Sorununuz çözülecektir.

UITextField ve UITextView Kullanımında Klavyeyi Gizlemek

Pazartesi, Ağustos 23rd, 2010

Eğer UITextField kullanıyorsanız yazma işi bitince klavyeyi ortadan kaldırmak çok kolay. Aşağıdaki gibi bir fonksiyon yazıp (.h dosyasına tanımlamasını da eklemeyi unutmayın) view’ınızdaki UITextField objesinin “Did on End Exit” olayında (event) bu fonksiyonun çalışmasını sağlamalısınız.

- (IBAction)done:(id)sender{
[ornekTextField resignFirstResponder];
}

Eğer çok satırlı bir yazı alanı ihtiyacınız varsa UITextView kullanıyorsunuz demektir. UITextView’ın malesef “Did on End Exit” gibi bir tetikleyicisi olmadığı için yukarıdaki methodu burda kullanamıyorsunuz. Bu durumu düzeltmek için hoş olmasa da işe yarayan bir kaç yöntem var.

ToolBar kısmına mesela “Tamam” gibi bir buton ekleyip bu butona basıldığında yukarıdaki fonksiyonu çalıştırıp klavyeyi gizleyebilirsiniz. Ya da daha çok kullanılan bir metod olarak ekranda boş bir alana tıklandığında bu fonksiyonu çalıştırabilirsiniz. Aslında aynı şeyi tekrar ediyorum. Çünkü ekranda boş bir alana basmayı algılayabilmek için şöyle bir numara yapıyoruz. “Custom” tipinde bir buton oluşturup Layout menüsünden “Send to back” diyerek view’ın en arkasına gönderiyoruz ve bu butonun eniyle boyunu tüm view’ı kaplayacak şekilde genişletiyoruz. Böylece kocaman ve görünmez bir butonumuz oluyor. Bu butona basıldığında (Touch Down) yukarıdaki fonksiyonun çalışmasını sağlıyoruz. İşte hepsi bu :)

iPhone Uygulamanızda Status Barı Siyaha Çevirmek

Pazar, Ağustos 22nd, 2010

Eğer siz de benim gibi bunu görsel arayüzden beceremiyorsanız AppDelegate.m dosyasındaki applicationDidFinishLaunching fonksiyonunun içine şu koyu renkle yazılmış ifadeyi ekleyin:

-(void)applicationDidFinishLaunching:(UIApplication *)application{
[application setStatusBarStyle:UIStatusBarStyleBlackOpaque];

}

Diğer bir yol ise, projenizdeki ProjeAdi-Info.plist dosyasına şu satırları eklemek:

<key>UIStatusBarStyle</key>
<string>UIStatusBarStyleOpaqueBlack</string>

iPhone Uygulama İkonundaki Parlaklık Efektini Kaldırma

Pazar, Ağustos 22nd, 2010

iPhone uygulamanızı hazırlarken özene bezene yaptığınız uygulama ikonunun üzerine otomatik olarak eklenen parlaklık (glossy) efektini beğenmiyorsanız kolayca kaldırabilirsiniz. Projenizdeki ProjeAdi-Info.plist dosyasını açarak “Icon File” alanına ikonunuzun adını kaydedin. Sonra bu dosyayı bir text editörü ile açıp aşağıdaki koyu renkli satırları ekleyin. Eğer ikon değişmemisse Xcode’un Build menusunden “Clean” seçeneğini çalıştırın.


<key>NSMainNibFile</key>
<string>MainWindow</string>
<key>UIPrerenderedIcon</key>
<true/>

</dict>
</plist>

C’ye başlamanın yaşı olmaz

Cumartesi, Ağustos 7th, 2010

Bilgisayarla ilk tanışmam 1993 yılında bir programcı vesilesiyle olduğu için o günden bu yana bilgisayar karşısında son kullanıcı olmakdan çok programcı olarak vakit geçirmişimdir. Bir yerden sonra programcılık artık hobi olmaktan da çıkıp mesleğim haline geldi.

17 yılda insan envai çeşit programlama dilini öğrenir aslında ama yapı itibariyle beğendiğim bir şeyden kolay kolay vazgeçemediğim için qbasic ile başladığım yolculuğa uzunca bir süre (2000′e kadar) Visual Basic ile devam ettim. Üniversitede internet ile tanışınca HTML’di, Javascript’ti, Perl’di, PHP’ydi derken o heyecanla masaüstü uygulamalardan kopup script dillere kaymış buldum kendimi. Profesyonel iş hayatına PHP geliştirici olarak girince bir daha kopamadım PHP’den.

Üniversitede bir kaç arkadaşımla beraber kendi kendimize C’ye başladığımızı hatırlıyorum, bir süre sonra arkadaşlar vazgeçince ben de bırakmıştım. İşte o gün bıraktığım C bugün tekrar karşıma çıktı.

Yıllardır script yazmakdan sıkılmış biri olarak kendimi mobil dünyanın -bilhassa iPhone’un- serin sularına atmak istiyorum, ama Objective C stilinde yüzemeyenler bu suda boğulup gidiyorlar. Bense stili bıraktım, daha yüzmeyi bile bilmiyorum malesef.

En çok ağırıma giden de gözümün önünde iPhone SDK’sının tüm komponentleri duruyor olmasına rağmen, içlerini dolduracak kodları nereye nasıl yazacağımı bilememek.

İnternetten çat pat indirdiğim örnekler sayesinde bir kaç uygulama yazıp AppStore’a koymayı başardım ama hepsi basit öğeler içeren uygulamalardı. Örneğin bir tablonun içini dataları veritabanından gelecek şekilde dolduramıyordum. Takıldığım yerlerde sosyal medyada yardım çığlıkları atıyordum ama #yay’dan başka cevap gelmiyordu.

Aslında bu devirde herşeyin çözümü nette var. Ama bu Objective C denen nane PHP’den sonra bana çok karışık geldi. Pratik olarak mevzuyu sökemedim malesef. Yaşlılık(!)

Bugün, yine derdime derman ararken, her zamanki gibi Türkçe kaynaklardan pek bir hayır gelmemesi üzerine İngilizce çözümlere bakıyordum ki cocoadevcentral.com sitesinin bu konuda eline kimsenin su dökemediğini öğrendim. Ben de bu siteden adım adım gitmeye karar verdim. Gel gör ki ilk adımda (http://cocoadevcentral.com/d/learn_objectivec/) “Eğer C bilmiyorsanız Objective C’ye başlamadan önce buyrun burdan (http://cocoadevcentral.com/articles/000081.php) C öğrenin) diye yazıyordu. Madem bir kere karar verdik, el mecbur uyacağız.

Ne demişler, C’ye başlamanın yaşı olmaaaz. (Daha demin dedim, başlığı yazarken).