保存しようとしたときにアイテムエントリの名前フィールドに値が入力されていない場合にUIAlertViewをポップアップするビューがあります。代わりに、独自のカスタムアラートビューを表示したかったのです。私はそれをxibでロードします:
- (void)enterNameAlert {
NSArray *subviewArray = [[NSBundle mainBundle] loadNibNamed:@"AddNameAlertView" owner:self options:nil];
enterNameAlertView = [subviewArray objectAtIndex:0];
enterNameAlertView.frame = CGRectMake(232, 417, 303, 171);
enterNameAlertView.alpha = 0.0;
[self.view addSubview:enterNameAlertView];
[self.view bringSubviewToFront:enterNameAlertView];
//fade view in
[UIView animateWithDuration:.50f delay:0.0f options:UIViewAnimationOptionCurveEaseOut animations:^(void) {
enterNameAlertView.alpha = 1.0;
} completion:NULL];
[UIView commitAnimations];
}
ただし、アラートが表示されている間は、ビュー上の他のすべての要素をクリックすることができます。理想的には、alertviewをモーダルにしたいです。ハックとして、アラートビューが表示されている間は他のすべての要素にxxxx.enabled = NOを設定し、アラートで[OK]を押すとそれらをxxxx.enabled=YESに戻します。
self.viewへのすべてのタッチをキャンセルするより良い方法が必要ですが、self.enterNameAlertViewへのタッチはキャンセルしないでください。
self.view.userInteractionEnabled = NOを実行すると、self.viewおよびself.enterNameAlertViewへのすべてのタッチがキャンセルされます。
何か案は?