????????去年做過(guò)一個(gè)畫(huà)圖軟件,需要在手機(jī)上進(jìn)行繪制草圖相關(guān)操作。其中一個(gè)就是長(zhǎng)按進(jìn)行繪制線段矩形等圖形,在此拿出來(lái)和大家分享一下。
1、創(chuàng)建一個(gè)長(zhǎng)按手勢(shì),并添加到相應(yīng)view上
UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc]initWithTarget:self action:@selector(longClick:)];
longPress.minimumPressDuration=0.2;
[recordImageViewaddGestureRecognizer:longPress];
2、創(chuàng)建相應(yīng)的長(zhǎng)按觸發(fā)方法(不創(chuàng)建的話,長(zhǎng)按的時(shí)候程序會(huì)crash)
- (void)longClick:(UILongPressGestureRecognizer *)longPress
{
? ? EM
? ? UIImageView *recordImageView = (UIImageView *)longPress.view;
? ? switch (longPress.state) {
? ? ? ? case UIGestureRecognizerStateBegan:
? ? ? ? {
? ? ? ? ? ? //長(zhǎng)按開(kāi)始
? ? ? ? ? ? recordImageView.transform = CGAffineTransformMakeScale(1.15, 1.15);
? ? ? ? ? ? [em startRecordWith:em.filePath];
? ? ? ? ? ? [recordImageView startAnimating];
? ? ? ? ? ? break;
? ? ? ? }
? ? ? ? case UIGestureRecognizerStateChanged:
? ? ? ? {
? ? ? ? ? ? //移動(dòng)中
? ? break;
? ? ? ? }
? ? ? ? case UIGestureRecognizerStateEnded:
? ? ? ? {
? ? ? ? ? ? //長(zhǎng)按結(jié)束
? ? ? ? ? ? recordImageView.transform = CGAffineTransformMakeScale(1.0, 1.0);
? ? ? ? ? ? [em stopRecordWith:em.filePath];
? ? ? ? ? ? [recordImageView stopAnimating];
? ? ? ? ? ? break;
? ? ? ? }
? ? ? ? default:
? ? ? ? ? ? break;
? ? }
}
????????長(zhǎng)按當(dāng)然還有其他的狀態(tài),但是平時(shí)開(kāi)發(fā)中基本上就用到這3種狀態(tài)。需要了解具體的,就去蘋(píng)果的官方文檔中了解吧。小編水平有限,如有疏漏之處請(qǐng)?jiān)谙旅媪粞?,我?huì)虛心采納您的意見(jiàn)。

ps:這里說(shuō)一下switch,每個(gè)case中一定break,不然還會(huì)走下面的狀態(tài),小編經(jīng)常會(huì)犯這種錯(cuò)