Я попал в странную проблему, я делаю расширение клавиатуры, в котором мне нужно нарисовать выделение клавиши при касании. Я с успехом могу это сделать, как ни странно для некоторых клавиш в левом верхнем углу специально клавиши Q и A, не нажимайте выделение каждый раз. В основном мой код выглядит следующим образом ..drawRect не вызывается каждый раз
- На
touchbegan
- Draw Highlight по телефону[keysLayer setNeedsDisplay];
- На
touchEnd
- Удалить Выделить еще раз позвонив[keysLayer setNeedsDisplay];
Так в основном, функция drawRect
Безразлично» t вызывается каждый раз на этих конкретных ключах, все остальное отлично работает, даже вызывается setNeedsDisplay
.
Итак, я ищу помощь, что может сбой drawRect Функция вызова, я хочу знать список причин.
Если кто-нибудь может мне помочь.
Update
Добавление кода
В SuperView где была добавлена KeysLayer вид.
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
[super touchesBegan:touches withEvent:event];
keysLayer.drawHighlight=YES;
keysLayer.touchLocation=[touch locationInView:self];
[keysLayer setNeedsDisplay];
}
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
[super touchesEnded:touches withEvent:event];
keysLayer.drawHighlight=NO;
[keysLayer setNeedsDisplay];
}
Внутри KeysLayer UIView класс
- (void)setTouchLocation:(CGPoint)location{
self.touchLocation=location;
bezierPathForHighlight=[self createHighLightPath];//Creating simple path based on touch location.
}
- (void)drawRect:(CGRect)rect {
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSaveGState(context);
if(!self.drawHighlight)
[bezierPathForHighlight removeAllPoints];
[bezierPathForHighlight stroke];
CGContextRestoreGState(context);
}
Update 2
Итак, я нашел эту проблему, ее происходит только в моем iPhone6 с iOS9. 0. Я подтверждаю это с помощью этого test application. Удивительно, что в этом тестовом приложении я обнаружил особую сенсорную область, где iOS не вызывает drawRect a iOS BUG?
См. Прикрепленное изображение ниже, в котором объясняется, где на самом деле это происходит. У нас проблема, без решения. Нужна помощь.
Спасибо.
Укажите фактический код, который вы используете, иначе он вряд ли сможет узнать причину. –
Вы пытались добавить как subview вместо вызова setNeedsDisplay –
@ Mr.T Да, он добавлен как subview, в котором у меня есть все обычные клавиши клавиатуры, каждый ключ получает выделение совершенно на ощупь, только два отдельных ключа иногда не могут выделить aka не вызывающий drawRect. – iphonic