iOS UIAlertController中UITextField添加晃動(dòng)效果與邊框顏色詳解
前言
大家都知道在iOS8中引入了UIAlertController,通過UIAlertController可以方便的添加文本框進(jìn)行編輯,但是,在輸入錯(cuò)誤的內(nèi)容時(shí),如何對(duì)用戶進(jìn)行提醒就成了問題,因?yàn)閁IAlertController中的所有UIAlertAction都會(huì)導(dǎo)致UIAlertController的消失。這里,我就描述兩種提示的方法,分別是晃動(dòng)文本框和修改邊框的顏色。下面話不多說了,來一起看看詳細(xì)的實(shí)現(xiàn)方法吧。
晃動(dòng)UITextField
晃動(dòng)UITextField其實(shí)就是對(duì)它添加一個(gè)動(dòng)畫效果,參考了Stack Overflow上的做法,通過添加position的動(dòng)畫,可以實(shí)現(xiàn)UIAlertController中的UITextField的晃動(dòng)效果。
- (void)shakeField:(UITextField *)textField {
CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"position"];
animation.duration = 0.07;
animation.repeatCount = 4;
animation.autoreverses = YES;
animation.fromValue = [NSValue valueWithCGPoint:CGPointMake(textField.centerX - 10, textField.centerY)];
animation.toValue = [NSValue valueWithCGPoint:CGPointMake(textField.centerX + 10, textField.centerY)];
[textField.layer addAnimation:animation forKey:@"position"];
}
修改UITextField的邊框顏色
UIAlertController中文本框的默認(rèn)邊框顏色都是黑色,通常在輸入異常時(shí)會(huì)改為紅色進(jìn)行提醒,這個(gè)時(shí)候,如果直接修改UITextField的border將會(huì)變成下圖樣式:
- (void)testAlert {
UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"測試" message:@"測試輸入框邊框顏色" preferredStyle:UIAlertControllerStyleAlert];
[alert addAction:[UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:nil]];
[alert addTextFieldWithConfigurationHandler:^(UITextField * _Nonnull textField) {
textField.layer.borderColor = [UIColor redColor].CGColor;
textField.layer.borderWidth = 1;
}];
[self presentViewController:alert animated:YES completion:nil];
}

而在實(shí)際中我們應(yīng)該這樣修改:
- (void)testAlert {
UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"測試" message:@"測試輸入框邊框顏色" preferredStyle:UIAlertControllerStyleAlert];
[alert addAction:[UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:nil]];
[alert addTextFieldWithConfigurationHandler:^(UITextField * _Nonnull textField) {
self.currentField = textField;
}];
[self presentViewController:alert animated:YES completion:^{
[[self.currentField superview] superview].backgroundColor = [UIColor redColor];
}];
}
這樣的產(chǎn)生效果才是我們想要的。

需要注意的是:一定要在present以后進(jìn)行設(shè)置,否則會(huì)發(fā)現(xiàn)設(shè)置是無效的,因?yàn)闆]有present之前,textField的superview是nil,設(shè)置是無效的。
總結(jié)
以上就是這篇文章的全部內(nèi)容了,本文還有許多不足,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
iOS實(shí)現(xiàn)去除html標(biāo)簽的方法匯總
相信大家在做網(wǎng)站的時(shí)候,經(jīng)常會(huì)遇到去除html標(biāo)簽的問題,下面這篇文章主要給大家總結(jié)介紹了關(guān)于iOS如何實(shí)現(xiàn)去除html標(biāo)簽的一些方法,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來一起看看吧。2017-10-10
iOS中UIAlertController設(shè)置自定義標(biāo)題與內(nèi)容的方法
UIAlertController是iOS8推出的新概念,取代了之前的 UIAlertView和UIActionSheet(雖然現(xiàn)在仍可以使用,但是會(huì)有警告)。下面這篇文章主要給大家介紹了關(guān)于iOS中UIAlertController如何設(shè)置自定義標(biāo)題與內(nèi)容的相關(guān)資料,需要的朋友可以參考下。2017-10-10
iOS UIButton擴(kuò)大按鈕響應(yīng)區(qū)域的解決方法
這篇文章主要為大家詳細(xì)介紹了iOS UIButton擴(kuò)大按鈕響應(yīng)區(qū)域的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-08-08
iOS UICollectionView實(shí)現(xiàn)卡片效果
這篇文章主要為大家詳細(xì)介紹了iOS UICollectionView實(shí)現(xiàn)卡片效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-04-04
iOS 封裝導(dǎo)航欄及返回,獲取控件所在控制器的實(shí)例
下面小編就為大家分享一篇iOS 封裝導(dǎo)航欄及返回,獲取控件所在控制器的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-01-01
iOS開發(fā)中用imageIO漸進(jìn)加載圖片及獲取exif的方法
這篇文章主要介紹了iOS開發(fā)中中用imageIO漸進(jìn)加載圖片及獲取exif的方法,代碼演示為傳統(tǒng)的Objective-C,需要的朋友可以參考下2015-09-09
iOS11上Xcode9 AppIcon 圖標(biāo)不顯示
升級(jí)到iOS11系統(tǒng)下自己的項(xiàng)目桌面app圖標(biāo)不見了,是什么原因呢,經(jīng)過一番查找,終于發(fā)現(xiàn)問題所在,現(xiàn)在分享給大家2017-11-11

